Blog

A로 B 만들기

문제 #

문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.

제한사항 #
  • 0 < before의 길이 == after의 길이 < 1,000
  • before와 after는 모두 소문자로 이루어져 있습니다.

나의 풀이 #

import java.util.*;

class Solution {
    public int solution(String before, String after) {
        int answer = 2;
        char[] charBefo = before.toCharArray();
        char[] charAftr = after.toCharArray();
        Arrays.sort(charBefo);
        Arrays.sort(charAftr);
        
        for(int i = 0; i<charBefo.length; i++) {
            if(charBefo[i]==charAftr[i]) {
                answer = 1;
            }
            else {
                answer = 0;
                break;
            }
        }
        
        return answer;
    }
}
import java.util.*;

class Solution {
    public int solution(String before, String after) {
        int answer = 2;
        char[] charBefo = before.toCharArray();
        char[] charAftr = after.toCharArray();
        Arrays.sort(charBefo);
        Arrays.sort(charAftr);
        
        before = String.valueOf(charBefo);
        after = String.valueOf(charAftr);
        
        answer = before.equals(after) == true? 1 : 0;
        return answer;
    }
}
  • before와 after를 정렬한 후 비교하여 동일하면 before의 순서를 바꾸어 after를 만들 수 있음을 이용한다.
  • String은 정렬이 불가능함으로 charArray의 형태로 바꾸어 정렬한다.
  • 정렬 후 비교하여 같다면 1을 다르면 0을 return한다.
    • String형태로 다시 변환후 equls()를 이용한다.
    • 반복문을 이용하여 각 배열을 비교한다.

다른 사람의 풀이 #

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;
    }
}
  • char[] to String변환 시 new String을 이용하여 더 간략히 표현하였다.

관련개념 학습 #

String

Arrays