https://www.acmicpc.net/problem/10798
풀이
더보기
일단 2차원 배열을 만들 배열 내 배열을 전역변수로 지정한다 .
그리고 maxCount를 지정하는데, 이는 배열에 들어오는 글자의 길이가 전부 동일하지 않기 때문에 지정해두는 것이다.
들어오는 문자가 다섯 개라고 했으므로
0부터 4까지 반복문을 돌린다. 한 글자씩 떼어서 더해야하므로 string.toCharArray()를 이용하여 한 글자씩 뗀 배열을 저장한다.
이 때, 배열의 길이와 저장된 maxCount 두 개의 값을 비교해 더 큰 숫자를 maxCount 함으로써 반복문이 끝날때 쯤 제일 긴 문자열의 count값이 저장되도록 한다.
이제 while문을 통해 maxCount전까지 반복하도록 한다(근데 for문으로 해도 됐을듯?)
while문 내부에 다시 반복문을 만들어 배열 내에 있는 모든 배열 속, 지정된 인덱스 값만 추출하여 최종 문자열 배열에 더하도록 한다.
전체 다 더해졌으면 인덱스 값을 +1하여 다시 반복하여 +1 인덱스값을 모두 추출하여 더하도록 한다.
이때 배열의 길이가 인덱스를 반드시 넘어야만 하는데, 배열의 길이보다 인덱스가 넘어버리면 OutOfBoundException이 걸리기 때문에 배열 길이에 대한 조건문도 삽입해야한다.
이를 코드로 보면
fun main(args: Array<String>) {
question10798()
}
fun question10798() {
var wordList = mutableListOf<MutableList<Char>>()
var verticalWord = ""
var maxCount = 0
for(i in 0 .. 4) {
var list = readLine()!!.toCharArray().toMutableList()
wordList.add(i, list)
maxCount = maxCount.coerceAtLeast(list.count())
}
var index = 0
while (index < maxCount) {
wordList.forEach {
if(it.count() > index) {
verticalWord += it[index]
}
}
index += 1
}
println(verticalWord)
}
반응형
'스터디(beakjoon)' 카테고리의 다른 글
Kotlin] 백준 2745번 문제풀이 (0) | 2023.06.14 |
---|---|
Kotlin] 백준 10798번 문제풀이 (0) | 2023.06.14 |
Kotlin] 백준 2738번 문제풀이 (0) | 2023.06.13 |
Kotlin] 백준 1316번 문제풀이 (0) | 2023.06.13 |
Kotlin] 백준 25206번 문제풀이 (0) | 2023.06.12 |