알고리즘 문제
[알고리즘 문제] binary
박연호의 개발 블로그
2019. 3. 23. 13:01
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문을 빠져 나옵니다. 출력은 자료구조에 저장된 값들을 역순으로 출력합니다.