[BOJ/백준] 20359번 : A simple task (Java)
📘 백준 20359번 : A simple task
🔤 문제 번역
문제
양의 정수 n이 주어졌을 때, n = o × 2^p 를 만족하는 홀수 정수 o와 정수 p를 구하시오.
다음과 같은 프로그램을 작성하시오.
표준 입력으로 양의 정수 n을 읽는다.
n = o × 2^p 를 만족하는 홀수 정수 o와 정수 p를 계산한다.
그 결과를 표준 출력으로 출력한다.
입력
입력의 첫 줄에는 하나의 정수 n이 주어진다.
(1 ≤ n ≤ 10^6)
출력
출력은 공백으로 구분된 두 정수 o와 p를 출력한다.
단, n = o × 2^p를 만족해야 한다.
💡 문제 풀이
o가 홀수이므로 n을 2로 나누어 떨어지지 않을 때까지 2로 나누는 걸 반복하면서 횟수 카운트.
남은 n이 o가 되고 2로 반복해서 나눈 횟수가 p가 됨.
✅ 코드 (Java)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// https://www.acmicpc.net/problem/20359
// 2로 나누어 떨어지지 않을 때까지 반복
public class B20359_A_simple_task {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int cnt = 0;
while (n % 2 == 0) {
n /= 2;
cnt++;
}
System.out.println(n + " " + cnt);
br.close();
}
}