[백준] 학생 번호 (1235)

문제 설명

백준 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
    }
}

태그:

카테고리:

업데이트: