본문 바로가기
알고리즘 문제

[알고리즘 문제] binary

by 박연호의 개발 블로그 2019. 3. 23.




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문을 빠져 나옵니다. 출력은 자료구조에 저장된 값들을 역순으로 출력합니다.