반응형
백준 2941번 문제입니다. (solved.ac) 기준 실버 5 문제입니다.
https://www.acmicpc.net/problem/2941
문제
문제 접근
문제에서 주어진 크로아티아 알파벳 변경 표를 참고하여 입력받은 문자열을 탐색하며 크로아티아 알파벳으로 변경이 가능한 문자들을 하나의 크로아티아 알파벳으로 변경할 수 있도록하였습니다.
예를들어 c=를 크로아티아 알파벳인 č로 변환하게 된다면 2개의 문자가 1개로 줄어드는 것이고 dz= 를 dž로 변환하게 된다면 3개의 문자가 1개로 줄어드는 것 입니다.
기본적인 문자열의 길이를 처음 입력받은 문자열의 길이로 지정해주고 크로아티아 알파벳으로 변경 가능한 문자열들을 찾을 때 마다 줄어든 문자의 수 만큼 기본 문자열의 길이에서 빼줄 수 있도록 하였습니다. (dz=를 제외하고 다른 모든 부분은 -1이고 dz=만 -2)
정답 코드
fun main() {
val string = readln()
var ans = string.length
string.forEachIndexed { index, it ->
if (index + 1 < string.length)
when (it) {
'c' -> {
if (string[index + 1] == '=' || string[index + 1] == '-') ans--
}
'd' -> {
if (index + 2 < string.length)
if (string[index + 1] == 'z' && string[index + 2] == '=') ans--
if (string[index + 1] == '-') ans--
}
'l' -> {
if (string[index + 1] == 'j') ans--
}
'n' -> {
if (string[index + 1] == 'j') ans--
}
's' -> {
if (string[index + 1] == '=') ans--
}
'z' -> {
if (string[index + 1] == '=') ans--
}
}
}
println(ans)
}
반응형
'알고리즘 문제풀이[Algorithm]' 카테고리의 다른 글
[백준] 5555번 반지(브루트 포스 - 완전 탐색)[Kotlin - 코틀린] (0) | 2022.09.13 |
---|---|
[백준] 2897번 몬스터 트럭(브루트포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.09.13 |
[백준] 14225번 부분수열의 합(브루트포스 - DFS)[Kotlin - 코틀린] (0) | 2022.07.07 |
[백준] 1759번 암호 만들기(깊이우선탐색 - DFS)[Kotlin - 코틀린] (0) | 2022.07.07 |
[백준] 14912번 숫자 빈도수(브루트포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.07.06 |
최근댓글