문제 출처 : https://www.acmicpc.net/problem/9243
언어 : Kotlin
문제 설명 :
어느 날, 상근이의 여자친구는 상근이에게 매우 긴급한 목소리로 전화했다.
"상근아, 나 급하게 지워야 될 파일이 있어! 이 파일은 절대 복구되면 안돼."
파일을 완전 삭제하려면 하드드라이브에서 그 구간을 새로운 데이터로 반복해서 덮어써야 한다.
상근이는 여자친구를 위해 파일 완전 삭제 프로그램을 만들려고 한다. 파일 완전 삭제 프로그램은 매우 간단하다. 사용자는 삭제할 파일을 하나 고르고, 몇 번 덮어씌울지 n을 입력한다. n은 1부터 20까지 숫자 중 하나를 골라야 한다. 상근이의 프로그램은 파일을 비트단위로 덮어씌운다. 한 번 덮어씌울 때, 0인 비트는 1로, 1인 비트는 0으로 덮어씌운다.
상근이는 프로그램을 완성했고 테스트해보려고 한다. 파일을 삭제하기 전에 파일이 있었던 곳의 비트와 파일을 삭제한 후에 파일이 있었던 곳의 비트가 주어졌을 때, 프로그램을 올바르게 작성했는지 출력한다.
이 문제에서 파일이 실제로 삭제되었는지는 중요한 것은 아니다. 따라서, 문제에서 설명한대로 상근이가 프로그램을 작성했으면 삭제가 성공한 것으로, 그 외의 경우는 모두 실패한 것이다.
입력 :
첫째 줄에 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 파일을 삭제하기 전에 파일이 있었던 곳의 비트가 주어지고, 셋째 줄에는 삭제한 후에 비트가 주어진다. 비트는 0과 1로만 이루어져 있고, 두 문자열의 길이는 같다. 비트는 최대 1000개의 문자로 이루어져 있다.
출력 :
첫째 줄에 삭제가 성공했으면 "Deletion succeeded"을, 실패했으면 "Deletion failed"을 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
1 10001110101000001111010100001110 01110001010111110000101011110001 |
Deletion succeeded |
20 0001100011001010 0001000011000100 |
Deletion failed |
풀이 :
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 n = readLine().toInt()
bw.write(rewriter(readLine(), readLine(), n))
bw.flush()
bw.close()
}
fun rewriter(a: String, b: String, num: Int): String {
var result = "Deletion succeeded"
if (num % 2 == 0) {
for (i in a.indices) {
if (a[i] != b[i]) {
result = "Deletion failed"
break
}
}
} else {
for (i in a.indices) {
if (a[i] == b[i]) {
result = "Deletion failed"
break
}
}
}
return result
}
'백준 > 문제' 카테고리의 다른 글
11179번: 2진수 뒤집기 (2) | 2024.03.19 |
---|---|
5026번: 박사 과정 (1) | 2024.03.19 |
15312번: 이름 궁합 (0) | 2024.03.18 |
17249번: 태보태보 총난타 (0) | 2024.03.18 |
28691번: 정보보호학부 동아리 소개 (0) | 2024.03.18 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!