[백준] 3460번 이진수 - Java

a.rubz·2023년 4월 10일
1

백준

목록 보기
2/2
post-thumbnail
post-custom-banner

https://www.acmicpc.net/problem/3460


✨ Insight

1. 주어진 정수를 이진수로 변환

2. 뒤에서부터 반복문 돌리기
   (예) 문자열 123일 때, 인덱스를 0부터 시작하면 1 -> 2 -> 3 순서
        3 -> 2 -> 1 순서로 문자를 확인할 수 있게 인덱스를 '문자열 길이 - 1'부터 시작

3. 주어진 문제에 맞게 인덱스값 수정
   (예) 문자열 123일 때, 3의 인덱스는 2
   		but, 문제에서 원하는 값은 0
        '문자열 길이 - 실제 인덱스 값 - 1'이 거꾸로 된 인덱스의 값

📃 Code => 124ms

package basic;

import java.io.*;

public class Main {
    public void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int tc = Integer.parseInt(br.readLine());

        for (int i=0; i < tc; i++) {
            int num = Integer.parseInt(br.readLine());
            String binaryNum = Integer.toBinaryString(num);

            for (int j=binaryNum.length()-1; j>=0; j--) {
                if (binaryNum.charAt(j) == '1') {
                    bw.write(binaryNum.length()-j-1 + " ");
                }
            }

            bw.newLine();
        }

        bw.flush();
        br.close();
        bw.close();
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }

}

💡 Keyword

- Integer.toBinaryString(num) : 10진수를 이진수로 변환

- charAt(idx) : 문자열 내부에서 해당하는 인덱스의 문자값

- char와 String 비교 시, " " 대신 ' ' 사용

- bw.newLine() : BufferWriter 다음 줄 작성

profile
🔥 개발 공부 🔥
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 4월 16일

오~~~ 믓지다~!

답글 달기