import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
ArrayList list = new ArrayList(); // 2진수를 저장한 리스트
if (n == 1) { // 입력받은 숫자가 1이면 1을 출력
System.out.println(1);
return;
}
while (true) {
list.add(n % 2); // 2진수는 입력받은 숫자의 나머지 값
n /= 2; // 한번 나눴으면 n 값은 다시 2로 나눈 몫으로 설정
if (n == 1) { // 마지막으로 남은 몫이 1인 경우 1을 저장하고 while문을 빠져 나온다.
list.add(1);
break;
}
}
for (int i = list.size() - 1; i >= 0; i--) { // 저장된 2진수를 역으로 출력
System.out.print(list.get(i));
}
}
}
이 문제는 입력받은 정수를 이진수로 출력하는 문제입니다.
입력받은 정수를 2로 나누고 나머지를 자료구조에 저장하고 2로 나눈 몫을 저장합니다. 이 과정을 계속 반복하다가 만약 몫이 1인 경우는 더이상 나눌 수 없으므로 자료구조에 1을 저장하고 while문을 빠져 나옵니다. 출력은 자료구조에 저장된 값들을 역순으로 출력합니다.
'알고리즘 문제' 카테고리의 다른 글
[알고리즘 문제] Box Painting (0) | 2019.03.27 |
---|---|
[알고리즘 문제] Matrix Upside Down 2 (0) | 2019.03.26 |
[알고리즘 문제] Matrix Upside Down (0) | 2019.03.26 |
[알고리즘 문제] Number Reverse Triangle (0) | 2019.03.23 |
[알고리즘 문제] Number Pyramid (0) | 2019.03.23 |