22950번: 이진수 나눗셈백준/문제2024. 8. 27. 14:05
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/22950
언어 : Kotlin
문제 설명 :
이진수 M이 2^{K}으로 나누어 떨어지는지 여부를 판별하는 프로그램을 작성하시오. 이 때, 나누어 떨어진다는 것은 나머지 없이 정수 몫으로 나누어진다는 것을 의미한다.
입력 :
첫 번째 줄에는 이진수 M의 자리수인 N (1 ≤ N ≤ 1,000,000)이 주어진다.
두 번째 줄에는 이진수 M이 N자리만큼 주어진다. 이진수 M의 앞부분에는 불필요한 0이 올 수 있다.
세 번째 줄에는 나누는 수 2^{K}의 K (0 ≤ K ≤ 1,000,000)가 주어진다.
출력 :
이진수 M이 2^{K}으로 나누어 떨어진다면 YES, 나누어 떨어지지 않는다면 NO를 출력한다.
제한 사항 :
- 시간 제한 : 1초 (추가 시간 없음)
- 메모리 제한 : 1024MB (추가 메모리 음)
입출력 예 :
입력 | 출력 |
8 10000000 6 |
YES |
5 00110 2 |
NO |
풀이 :
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()
val m = readLine().toCharArray().toList()
val k = readLine().toInt()
bw.write(if (action(n, m, k)) "YES" else "NO")
bw.flush()
bw.close()
}
fun action(n: Int, m: List<Char>, k: Int): Boolean {
if ('1' !in m) return true
if (k == 0) return true
var cnt = 0
for (i in m.size - 1 downTo 0) {
if (m[i] == '1') break
if (m[i] == '0') cnt++
}
return cnt >= k
}
'백준 > 문제' 카테고리의 다른 글
9612번: Maximum Word Frequency (0) | 2024.08.28 |
---|---|
1622번: 공통 순열 (0) | 2024.08.28 |
16944번: 강력한 비밀번호 (0) | 2024.08.27 |
4072번: Words (0) | 2024.08.26 |
31562번: 전주 듣고 노래 맞히기 (4) | 2024.08.26 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!