[문제풀이] 01-12. 암호

𝒄𝒉𝒂𝒏𝒎𝒊𝒏·2023년 10월 24일
0

인프런, 자바(Java) 알고리즘 문제풀이

String(문자열) 다루기 - 0112. 암호


🗒️ 문제


🎈 나의 풀이

	private static String solution(int l, int n, String str) {
        String answer = "";

        for(int i=0; i<n; i++) {
            int k = 0;
            String code = str.substring(i*l, (i+1)*l);

            for(int j=0; j<code.length(); j++) {
                if(code.charAt(j) == '#') {
                    if(j == code.length() - 1) k+= 1;
                    else k += Math.pow(2, (code.length() - j - 1));
                }
            }
            answer += (char)k;
        }

        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int l = 7;
        int n = sc.nextInt();
        String str = sc.next();
        System.out.println(solution(l, n, str));
    }


🖍️ 강의 풀이

    private static String solution(int l, int n, String str) {
        String answer = "";

        for(int i=0; i<n; i++) {
            String code = str.substring(0, l).replace('#', '1').replace('*', '0');
            answer += (char)Integer.parseInt(code, 2);
            str = str.substring(l);
        }

        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int l = 7;
        int n = sc.nextInt();
        String str = sc.next();
        System.out.println(solution(l, n, str));
    }


💬 짚어가기

나의 풀이의 경우 조건을 통해 문자를 구분하고, Math 클래스의 pow() 메소드를
이용하여 2진수에 맞는 자릿수의 값을 계산하도록 구현하였다.

강의에서는 replace() 메소드를 통해 1과 0으로 변환 후 Integer 클래스의
parseInt() 메소드를 이용하여 2진수로 변환하였다.

parseInt(String s, int radix)에서 redix몇 진수로 표현할지 정할 수 있다.

profile
𝑶𝒏𝒆 𝒅𝒂𝒚 𝒐𝒓 𝒅𝒂𝒚 𝒐𝒏𝒆.

0개의 댓글