본문 바로가기

Java/프로그래머스

[JAVA] 프로그래머스 - 이진수 더하기

https://school.programmers.co.kr/learn/courses/30/lessons/120885

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

진법 변환 정리 (n진수 <-> 10진수)

 

1) 10진수 -> n진수

 

[JAVA] 진법 변환 정리 (n진수 <-> 10진수) (tistory.com)

 

[JAVA] 진법 변환 정리 (n진수 <-> 10진수)

1. 10진수 -> n진수 * 변환하기 전에 확인! 10진수를 제외한 나머지 진수는 String으로 받아야 한다. -> int는 전부 10진수로 인식 2진수, 8진수, 16진수는 아래와 같이 Binary, Octal, Hex함수가 존재한다. 물

cornarong.tistory.com

 

- 10진수를 제외한 나머지 진수는 String으로 받아야 한다

 -> int는 전부 10진수로 인식 

 

toString(int n, int radix)

public class Solution {
    public static void main(String[] args) {
        // 테스트를 위한 10진수 값 = 25
        int a = 25;

        System.out.println("10진수 -> 2진수");
        System.out.println(Integer.toBinaryString(a));
        System.out.println(Integer.toString(a,2));

        System.out.println("10진수 -> 3진수");
        System.out.println(Integer.toString(a,3));

        System.out.println("10진수 -> 4진수");
        System.out.println(Integer.toString(a,4));

        System.out.println("10진수 -> 5진수");
        System.out.println(Integer.toString(a,5));

        System.out.println("10진수 -> 6진수");
        System.out.println(Integer.toString(a,6));

        System.out.println("10진수 -> 7진수");
        System.out.println(Integer.toString(a,7));

        System.out.println("10진수 -> 8진수");
        System.out.println(Integer.toOctalString(a));
        System.out.println(Integer.toString(a,8));

        System.out.println("10진수 -> 16진수");
        System.out.println(Integer.toString(a,16));
        System.out.println(Integer.toHexString(a));
    }
}

 

 

2) n진수 -> 10진수 

 

- String타입으로 받은 n진수 값을 Integer.parseInt(string s, int radix) 함수에서 's' 변수에 넣고 넣은 값이 몇 진수 갓ㅂ인지 'radix'에 넣어 알려주어야 한다. 

 

public class Solution {
    public static void main(String[] args) {
        // 테스트를 위한 n진수 값 = 25
        String a = "110011";

        System.out.println("2진수 -> 10진수");
        System.out.println(Integer.parseInt(a,3));

        System.out.println("3진수 -> 10진수");
        System.out.println(Integer.parseInt(a,3));

        System.out.println("4진수 -> 10진수");
        System.out.println(Integer.parseInt(a,4));

        System.out.println("5진수 -> 10진수");
        System.out.println(Integer.parseInt(a,5));

        System.out.println("6진수 -> 10진수");
        System.out.println(Integer.parseInt(a,6));

        System.out.println("7진수 -> 10진수");
        System.out.println(Integer.parseInt(a,7));

        System.out.println("8진수 -> 10진수");
        System.out.println(Integer.parseInt(a,8));

        System.out.println("16진수 -> 10진수");;
        System.out.println(Integer.parseInt(a,16));
    }
}

 

 

 

정답 

 

class Solution {

    public String solution(String bin1, String bin2) {
        //2진수 -> 10진수 
        int a = Integer.parseInt(bin1,2);
        int b = Integer.parseInt(bin2,2);
        
        int sum = a+b;
        
        //10진수->2진수 
        String answer = Integer.toString(sum,2);
        
        return answer;
    }
}

 

 

 

다른 사람의 풀이 

 

class Solution {
    public String solution(String bin1, String bin2) {
        return Integer.toBinaryString(Integer.parseInt(bin1, 2) + Integer.parseInt(bin2, 2));
    }
}