IT/Algorithm | Coding Test

[프로그래머스 70129] [Java] 이진 변환 반복하기

iamhyeon 2025. 2. 27. 00:05


 

import java.util.Arrays;

public class 이진변환반복하기 {

    public static int[] solution(String s) {
        
        int[] answer = {0,0};

        while (!s.equals("1")) {
            int before = s.length();
            s = s.replaceAll("0", "");
            int after = s.length();

            answer[1] += before - after;    // 제거한 0의 개수

            s = Integer.toBinaryString(after);  // 이진변환

            answer[0]++;
        }

        return answer;
    }
    public static void main(String[] args) {
        System.out.println(Arrays.toString(solution("110010101001")));
        System.out.println(Arrays.toString(solution("01110")));
        System.out.println(Arrays.toString(solution("1111111")));
    }
}

 

 

✏️ Java의 Integer 클래스는 정수값을 2,8,16진수 문자열로 변환하는 메서드를 제공한다

 

Integer.toBinaryString(int i)

int number = 10;
String binaryString = Integer.toBinaryString(number);
System.out.println(binaryString); // 출력: 1010

 

Integer.toOctalString(int i)

int number = 10;
String octalString = Integer.toOctalString(number);
System.out.println(octalString); // 출력: 12

 

Integer.toHexString(int i)

int number = 10;
String hexString = Integer.toHexString(number);
System.out.println(hexString); // 출력: a

 

 

 

✏️ n진수 => 10진수로 변환하기

//2진수 -> 10진수
int binary = Integer.parseInt("1010",2);	// 출력: 10

//8진수 -> 10진수
int octal = Integer.parseInt("12", 8);		// 출력: 10

//16진수 -> 10진수
int hexaDemical = Integer.parseInt("A", 16);	// 출력: 10

 

 

 

 


refer to

https://velog.io/@llocr/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv2.-%EC%9D%B4%EC%A7%84-%EB%B3%80%ED%99%98-%EB%B0%98%EB%B3%B5%ED%95%98%EA%B8%B0-Java

 

 

 

반응형