[백준] 학생 번호 (1235)
문제 설명
입력 및 출력
» 입력
첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부터 9 사이의 숫자로 이루어진 문자열이 주어진다. 문자열의 길이는 100보다 작거나 같다.
» 출력
첫째 줄에 구하고자 하는 가장 작은 k값을 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
3 1212345 1212356 0033445 |
3 |
문제 풀이 (KOTLIN)
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
val list = mutableListOf<String>()
repeat(readLine().toInt()) {
list.add(readLine().reversed())
}
for (i in 1 .. list[0].length) {
val set = mutableSetOf<String>()
for (j in list) {
set.add(j.substring(0 until i))
}
if (set.size == list.size) {
println(i)
return
}
}
}
문제 풀이 (SWIFT)
let N = Int(readLine()!)!
var sn = [String](repeating: "", count: N)
for i in 0..<N {
sn[i] = String(readLine()!.reversed())
}
for i in 0..<sn[0].count {
var set = Set<String>()
let end = sn[0].index(sn[0].startIndex, offsetBy: i)
for j in 0..<N {
set.insert(String(sn[j][...end]))
}
if set.count == N {
print(i + 1)
break
}
}
문제 풀이 (SWIFT)
let N = Int(readLine()!)!
var sn = [String](repeating: "", count: N)
for i in 0..<N {
sn[i] = readLine()!
}
for i in 0...sn[0].count {
var set = Set<String>()
let start = sn[0].index(sn[0].endIndex, offsetBy: -i)
for j in 0..<N {
set.insert(String(sn[j][start...]))
}
if set.count == N {
print(i)
break
}
}