문제 출처 : https://www.acmicpc.net/problem/15312
언어 : Kotlin
문제 설명 :
'이름 궁합'이란 두 사람의 이름을 한 글자씩 번갈아 써 놓고 획수를 그 아래에 적은 뒤, 인접한 숫자끼리 더한 일의 자리 값을 아래에 적어 나가면서 마지막에 남은 두 숫자를 보고 궁합이 맞는 정도를 알아보는 일종의 점이다.
아직도 '그녀'를 잊지 못한 로맨티스트 종민이는 어느 날 그녀와 이름 궁합을 한 번 해 보기로 했는데, 그 결과는 충격적이었다.
이 결과를 도저히 받아들일 수 없었던 종민이는 이것이 틀렸음을 증명하기 위해 열심히 머리를 굴렸고, 다음과 같은 변명거리를 생각해 냈다.
"'그녀'는 한국인이 아니니까 한글로 이름 궁합을 보면 결과가 이상한 것이 당연하지! 세계 공용어인 영어 알파벳으로 이름을 쓰면 결과가 정확하게 나올 거야!"
그래서 종민이는 알파벳 대문자로 이름을 써 놓고 이름 궁합을 보려고 한다. 그런데, 종민이는 손으로 계산을 하면 실수를 할까 두려워 당신에게 프로그램을 짜 달라고 부탁했다. 종민이를 도와주자! 종민이가 정한 알파벳 대문자의 획수는 힌트를 참고하자.
입력 :
첫 번째 줄에는 종민이의 영어 이름 A가 주어진다.
두 번째 줄에는 '그녀'의 영어 이름 B가 주어진다.
A와 B 모두 알파벳 대문자로만 이루어진 길이 2 이상 2, 000 이하의 문자열이며, 둘의 길이가 같음이 보장된다. 이름 궁합을 볼 때는 A의 첫 글자를 먼저 쓴다고 하자.
출력 :
이름 궁합의 결과를 두 자리의 숫자로 출력한다. (십의 자리가 0이어도 두 자리로 출력한다)
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
CJM HER |
99 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val a = readLine()
val b = readLine()
val sb = StringBuilder()
for (i in a.indices) {
sb.append(a[i]).append(b[i])
}
val arr = intArrayOf(3, 2, 1, 2, 3, 3, 2, 3, 3, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1)
var list = sb.toString().map { arr[it.code - 65] }.toMutableList()
while (list.size > 2) {
val temp = mutableListOf<Int>()
for (i in 1 until list.size) {
val sum = list[i - 1] + list[i]
temp += if (sum >= 10) sum.toString().last().digitToInt() else sum
}
list = temp
}
bw.write(list.joinToString(""))
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
5026번: 박사 과정 (1) | 2024.03.19 |
---|---|
9243번: 파일 완전 삭제 (0) | 2024.03.19 |
17249번: 태보태보 총난타 (0) | 2024.03.18 |
28691번: 정보보호학부 동아리 소개 (0) | 2024.03.18 |
5582번: 공통 부분 문자열 (0) | 2024.03.15 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!