문제 링크
https://www.acmicpc.net/problem/3460
문제풀이
각 테스트 케이스에서 주어진 정수를 이진 문자열로 변환한 다음, 이진 문자열의 끝에서부터 탐색하여 비트가 1인 위치를 계산합니다. 계산된 위치를 공백으로 구분하여 저장하고, 결과를 출력할 때 마지막에 불필요한 공백을 제거하여 각 테스트 케이스에 대해 1의 위치를 올바른 순서로 출력합니다.
코드
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++) {
int n = sc.nextInt();
String binary = Integer.toBinaryString(n); // 정수 n을 이진 문자열로 변환
StringBuilder result = new StringBuilder(); // 결과를 저장
int length = binary.length();
for (int j = length - 1; j >= 0; j--) {
if (binary.charAt(j) == '1') {
result.append(length - j - 1).append(" ");
}
}
// 불필요한 공백 제거
System.out.println(result.toString().trim());
}
sc.close();
}
}
'알고리즘' 카테고리의 다른 글
[JAVA/자바] 백준 BAEKJOON 3048번 개미 (0) | 2024.08.18 |
---|---|
[PYTHON/파이썬] 백준 BAEKJOON 2460번 지능형 기차 2 (0) | 2024.08.16 |
[JAVA/자바] 백준 BAEKJOON 10798번 세로읽기 (0) | 2024.08.15 |
[PYTHON/파이썬] 백준 BAEKJOON 10818번 최소, 최대 (0) | 2024.08.14 |
[PYTHON/파이썬] 백준 BAEKJOON 2501번 약수 구하기 (0) | 2024.08.12 |