[λ°±μ€] νμ λ²νΈ 1235
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λ₯Ό μ°Ύμμ΅λλ€.