-
[๋ฐฑ์ค] ํ์ ๋ฒํธ 1235์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ 2023. 6. 6. 19:40
1. ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1235
๋ฌธ์
์ด๋ฒ์๋ ํ์๋ค์ ๋์ฑ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ํ์๋ง๋ค ๊ณ ์ ํ ํ์ ๋ฒํธ๋ฅผ ๋ถ์ฌํ๊ธฐ๋ก ํ์๋ค. ํ์ ๋ฒํธ๋ 0๋ถํฐ 9 ์ฌ์ด์ ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด๋ก, ๋ชจ๋ ํ์๋ค์ ํ์ ๋ฒํธ๋ ์๋ก ๋ค๋ฅด์ง๋ง ๊ทธ ๊ธธ์ด๋ ๋ชจ๋ ๊ฐ๋ค.
ํ์๋ค์ ๋ฒํธ๋ฅผ ๋ถ์ฌํด ๋๊ณ ๋ณด๋, ๊น์ง์ ์กฐ๊ต๋ ์ด์ฉ๋ฉด ๋ฒํธ๊ฐ ์ง๋์น๊ฒ ๊ธด ๊ฒ์ ์๋๊ฐ ์ถ์ ์๊ฐ์ด ๋ค์๋ค. ์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ 7์๋ฆฌ์ ํ์ ๋ฒํธ๋ฅผ ๋ณด์.
์ด๋ฆ ๋ฒํธ ์ค๋ฏผ์ 1212345 ๊นํํ 1212356 ์ด๋ํธ 0033445 ์ด์ฒ๋ผ ํ์ ๋ฒํธ๋ฅผ ๊ตณ์ด 7์๋ฆฌ๋ก ํ์ง ์๊ณ , ๋ค์์ ์ธ ์๋ฆฌ๋ง์ ์ถ๋ ค์ ๋จ๊ฒจ ๋์๋ ๋ชจ๋ ํ์๋ค์ ํ์ ๋ฒํธ๋ฅผ ์๋ก ๋ค๋ฅด๊ฒ ๋ง๋ค ์ ์๋ค.
์ด๋ฆ ๋ฒํธ ์ค๋ฏผ์ 345 ๊นํํ 356 ์ด๋ํธ 445 ํ์ง๋ง ์ธ ์๋ฆฌ๋ณด๋ค ์ ๊ฒ ๋จ๊ฒจ ๋์์๋ ๋ชจ๋ ํ์๋ค์ ํ์ ๋ฒํธ๋ฅผ ์๋ก ๋ค๋ฅด๊ฒ ๋ง๋ค ์ ์๋ค.
ํ์๋ค์ ๋ฒํธ๊ฐ ์ฃผ์ด ์ก์ ๋, ๋ค์์ k์๋ฆฌ๋ง์ ์ถ๋ ค์ ๋จ๊ฒจ ๋์์ ๋ ๋ชจ๋ ํ์๋ค์ ํ์ ๋ฒํธ๋ฅผ ์๋ก ๋ค๋ฅด๊ฒ ๋ง๋ค ์ ์๋ ์ต์์ k๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ํ์์ ์ N(2≤N≤1,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ํ์์ ํ์ ๋ฒํธ๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋ชจ๋ ํ์๋ค์ ํ์ ๋ฒํธ๋ ์๋ก ๋ค๋ฅด์ง๋ง ๊ทธ ๊ธธ์ด๋ ๋ชจ๋ ๊ฐ์ผ๋ฉฐ, 0๋ถํฐ 9 ์ฌ์ด์ ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด์ ๊ธธ์ด๋ 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ตฌํ๊ณ ์ ํ๋ ๊ฐ์ฅ ์์ k๊ฐ์ ์ถ๋ ฅํ๋ค.
๋๋ณด๊ธฐ์์ ์ ๋ ฅ
3 1212345 1212356 0033445
์ ๋ต : 3
2. ์ฝ๋
let input = Int(readLine()!)! var studentList : [String] = [] var result : Int = 0 for _ in 0..<input{ let str = String(readLine()!) studentList.append(str) } let length = studentList[0].count // ํ์๋ค์ ํ์ ๋ฒํธ๋ ์๋ก ๋ค๋ฅด์ง๋ง ๊ธธ์ด๋ ํญ์ ๊ฐ๋ค for i in (0..<length).reversed(){ // 0..<7์ ๋ฐ๋๋ก 6๋ถํฐ 0๊น์ง var temp = Set<String>() // ์๋ฅธ ๋ฒํธ๋ฅผ ์ค๋ณต ์ฒ๋ฆฌ ์๋๊ฒ๋ for j in studentList{ let startIndex = j.index(j.startIndex, offsetBy: i) //์์ ์ง์ ์ i๋ก ํ ์ด์ ๋ i๋ ๊ฐ์ํ๊ธฐ ๋๋ฌธ์ let endIndex = j.index(j.startIndex, offsetBy: length - 1) // ๋๋๋ ์ง์ ์ ํญ์ 6์ด๊ธฐ ๋๋ฌธ์ let subString = j[startIndex...endIndex] //๋ฌธ์์ด ์๋ฅด๊ธฐ temp.insert(String(subString)) // temp์ ๋ฃ์ด ํ๋จ } if temp.count == studentList.count{ // ์์์ ์๋ผ์ ๋ฃ์ ๋ฌธ์์ด์ ๊ฐ์๊ฐ ์ ๋ ฅ๋ฐ์ ํ์ ๋ฆฌ์คํธ ๊ฐ์๋ ๊ฐ์ผ๋ฉด result = length - i // ์ด ๊ธธ์ด์์ ํ์ฌ ์งํํ๊ณ ์๋ i์ ๊ฐ ๋นผ๊ธฐ break } } print(result)
3. ์ฝ๋ ์ค๋ช
์ ๋ ฅ๋ฐ์ ํ์ ๋ฒํธ๋ฅผ studentList์ ์ ์ฅํฉ๋๋ค.
temp๋ผ๋ ๋น Set์ ์์ฑํฉ๋๋ค. Set์ ์์๋๋ก ์๋ฆฐ ํ์ ๋ฒํธ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ฉ๋์ ๋๋ค.subString์ด ๋ค์์๋ถํฐ ํ๋์ฉ ์ฆ๊ฐํ๋ฉด์ ์๋ฆฐ ๋ฒํธ์ ๋๋ค.
ํ์ ๋ฒํธ๋ฅผ ์์๋๋ก ๋ฐ๋ณตํ๋ฉด์, ๊ฐ ๋ฒํธ๋ฅผ temp์ ์ถ๊ฐํฉ๋๋ค.for i in (0.. <length). reversed() ์ด์ชฝ์์ ๋ฐ๋ณต์ ๋๋ฉด์ ์๋ก์ด temp์ ์์ฑํฉ๋๋ค.
temp์ ์๋ ๋ฒํธ์ ๊ฐ์๊ฐ studentList์ ๊ธธ์ด์ ๊ฐ์ผ๋ฉด, ์๋ก ๋ค๋ฅธ ๋ฒํธ๋ก ๋ง๋ค ์ ์์ผ๋ฏ๋ก ์ต์์ k๋ฅผ ์ฐพ์์ต๋๋ค.
'์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ ์ฆ4๋ธ๋ก (0) 2023.06.25 [ํ๋ก๊ทธ๋๋จธ์ค] 1์ฐจ ๋น๋ฐ์ง๋ (0) 2023.06.08 [๋ฐฑ์ค] ์ด์ ๊ณ์ฐ 2644๋ฒ (0) 2023.06.04 [๋ฐฑ์ค] ๋ฐ์ด๋ฌ์ค 2606๋ฒ (0) 2023.06.03 [ํ๋ก๊ทธ๋๋จธ์ค] ์ต๋๊ฐ๊ณผ ์ต์๊ฐ, JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (0) 2023.06.03