본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

[프로그래머스 - JAVA] A로 B만들기

by 코딩하는 흰둥이 2023. 3. 11.
반응형

 

  • 내 풀이
class Solution {
    public int solution(String before, String after) {
        int answer = 0;
        
        StringBuilder reverse = new StringBuilder();

        reverse.append(before);

        before = String.valueOf(reverse.reverse());

        if(before.equals(after)){
            answer = 1;
        }
        return answer;
    }
}





class Solution {
    public int solution(String before, String after) {
        int answer = 0;
        
        String a = "";
        for (int i = before.length() - 1; i >= 0; i--) {
            a += before.charAt(i);
        }

        if (a.equals(after)) {
            answer = 1;
        }        
        return answer;
    }
}

첫번째 코드로 제출을 해보니 여러개가 실패하였고 아래 처럼 다시 바꿔서 해봐도 똑같이 실패를 하였다.

before의 문자를 뒤집어서 after랑 비교하면 되는 문제가 아니였던가??

구글링을 하던 중 두 변수를 오름차순으로 정렬하여 비교하면 된다는 글이 있어 해보았다.

 

import java.util.Arrays;

class Solution {
    public int solution(String before, String after) {
        int answer = 0;

        String[] b = before.split("");
        String[] a = after.split("");

        Arrays.sort(b);
        Arrays.sort(a);

        before = new String(Arrays.toString(b));
        after = new String(Arrays.toString(a));

        if (before.equals(after)){
            answer = 1;
        }
        return answer;
    }
}

결론은 정상적으로 동작하여 제출 후 채점하기가 통과하였다.

문자의 오름차순과 쓰여져 있는 순서로의 비교는 다르지 않나 생각된다.

다른 사람의 풀이로 가보니 첫번째 코드리뷰에 나와 같은 생각을 하는 댓글을 발견하였다.

아마 댓글이 없을 뿐 비슷하게 생각하신 분들이 더 있지 않을까 생각해본다.

 

 

  • 다른 사람 풀이
import java.util.Arrays;
class Solution {
    public int solution(String before, String after) {
        char[] a = before.toCharArray();
        char[] b = after.toCharArray();
        Arrays.sort(a);
        Arrays.sort(b);

        return new String(a).equals(new String(b)) ? 1 :0;
    }
}

댓글