반응형
```
백준 20154번 이 구역의 승자는 누구야?! Kotlin 구현해보기
```
이번 글을 통해 배워갈 내용
- 백준 20154번 풀이
https://www.acmicpc.net/problem/20154
20154번: 이 구역의 승자는 누구야?!
첫째 줄에 알파벳 대문자로만 이루어진 길이 K(1 ≤ K ≤ 1,000,000)인 문자열 S가 주어진다.
www.acmicpc.net
백준 20154번 이 구역의 승자는 누구야?!는
난이도 브론즈 등급의 문제로서
알파벳 대문자의 획수가 주어지면
주어진 문자열에 전체 합이
홀수면 I'm a winner!
짝수면 You're the winner?
를 출력해주면 됩니다.
또한 모든 중간 연산에 합은 10으로 모듈러 연산을 해줘야 합니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
문자열을 스트림 돌려서
각 문자의 획을 찾은 다음
모든 문자열을 더해주는데
중간에 10이 넘는 경우 모듈러 10 연산을 해주었습니다.
결과를 출력합니다.
val alphabetStrokeCnt = arrayOf(3, 2, 1, 2, 3, 3, 3, 3, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 1, 2, 1, 1, 2, 2, 2, 1)
const val I_WINNER_STRING = "I'm a winner!"
const val YOU_WINNER_STRING = "You're the winner?"
fun main(args: Array<String>) {
print(findWinner(readln()))
}
fun findWinner(str: String): String {
val ans = str.asSequence()
.map { x -> strokeOfAlphabetCapital(x) }
.fold(0) { sum, num -> sumWithMod10(sum, num) }
return if (ans % 2 == 0) {
YOU_WINNER_STRING
} else {
I_WINNER_STRING
}
}
fun strokeOfAlphabetCapital(x: Char): Int {
return alphabetStrokeCnt[x - 'A']
}
fun sumWithMod10(sum: Int, num: Int): Int {
var ret = sum + num
if (ret > 9) ret %= 10
return ret
}
// https://codemasterkimc.tistory.com/
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
728x90
반응형
'Kotlin > Kotlin 알고리즘' 카테고리의 다른 글
백준 2164번 카드2 Kotlin 구현해보기 (0) | 2022.10.19 |
---|---|
백준 8437번 Julka Kotlin 구현해보기 (0) | 2022.10.08 |
백준 25277번 Culture shock (0) | 2022.10.05 |
백준 25286번 11월 11일 Kotlin 구현해보기 (0) | 2022.10.05 |
백준 25640번 MBTI Kotlin 구현해보기 (0) | 2022.10.04 |