4597번: 패리티백준/문제2024. 4. 11. 12:44
Table of Contents
문제 출처 : https://acmicpc.net/problem/4597
언어 : Kotlin
문제 설명 :
1의 개수가 홀수개인 비트스트링을 "홀수 패리티"를 가지고 있다고 한다. 또, 짝수개인 경우에는 "짝수 패리티"를 가지고 있다고 한다. 또, 0도 짝수로 간주한다. 따라서, 1이 없는 비트 스트링은 짝수 패리티를 가지고 있다.
마지막 숫자가 지워진 비트 스트링이 주어지고, 이 비트 스트링의 패리티가 주어졌을 때, 마지막 숫자를 올바르게 구하는 프로그램을 작성하시오.
입력 :
입력은 여러 개의 비트 스트링으로 이루어져 있다. 각 비트 스트링은 한 줄로 이루어져 있고, 길이는 1~31비트이다. 또, 비트 스트링의 마지막 문자는 e 또는 o이다. (e: 짝수 패리티, o: 홀수 패리티) 마지막 줄에는 '#'이 주어진다.
출력 :
입력으로 주어진 각각의 비트 스트링에 대해서, 마지막 문자를 올바른 비트로 바꾼 비트 스트링을 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
101e 010010o 1e 000e 110100101o # |
1010 0100101 11 0000 1101001010 |
풀이 :
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))
var input: String?
while (true) {
input = readLine()
if (input == "#") break
input.count { it == '1' }.also {
val num = it % 2
val check = input.last()
val temp = input.slice(0 until input.lastIndex)
when (check) {
'e' -> when (num) {
0 -> bw.write("${temp}0")
else -> bw.write("${temp}1")
}
else -> when (num) {
0 -> bw.write("${temp}1")
else -> bw.write("${temp}0")
}
}
}
bw.append("\n")
bw.flush()
}
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
11367번: Report Card Time (0) | 2024.04.12 |
---|---|
14726번: 신용카드 판별 (0) | 2024.04.12 |
10266번: 시계 사진들 (0) | 2024.04.11 |
1515번: 수 이어 쓰기 (0) | 2024.04.11 |
17350번: 2루수 이름이 뭐야 (0) | 2024.04.09 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!