코딩 테스트/백준
[백준] 3460번 : 이진수 (JAVA/자바)
토자맨
2023. 4. 4. 01:09
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 테스트 케이스 개수를 잘못 이해해서 한참을 햇갈렸다.
// 몇번 입력받아서 테스트할지를 말하는 거다.
int T = sc.nextInt(); // 테스트 케이스 개수
for (int i = 0; i < T; i++) { // T번 반복
int n = sc.nextInt();
String binary = Integer.toBinaryString(n); // 10진수를 2진수로 변환
// n = Integer.parseInt(binary); // 원래는 다시 int형으로 변환해서 구하려고 했으나 이부분이 오류가 나서 char[] 배열로 구했다.
char[] bn = binary.toCharArray(); // char형 배열에 저장
int m = bn.length;
// 문제에선 뒤에서 부터 시작( [...|3|2|1] )이라 했는데
// 배열은 앞에서부터 시작( [0|1|2|3|...} )하기 때문에 아래처럼 설정
for(int j = m - 1; j >= 0; j--){
if (bn[j] == '1') System.out.print(m - j - 1 + " ");
}
}
}
}