코딩테스트 연습/프로그래머스 LV.0

[프로그래머스] Lv.0 A로 B 만들기 - 자바(Java)

5ein 2024. 4. 14. 05:47

문제: 코딩테스트 연습 - A로 B 만들기 | 프로그래머스 스쿨 (programmers.co.kr)

문제설명

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


제한사항

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

입출력 예

before after result
"olleh" "hello" 1
"allpe" "apple" 0

나의 문제 풀이

//문제풀이1 String[]
import java.util.*;
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);
		if(Arrays.equals(a, b)) answer = 1;
        return answer;
    }
}

//문제풀이2 char[], 삼항연산자
import java.util.*;
class Solution {
    public int solution(String before, String after) {
        int answer = 0;
        char[] b = before.toCharArray();
        char[] a = after.toCharArray();
        Arrays.sort(b);
        Arrays.sort(a);
        answer = new String(a).equals(new String(b)) ? 1 :0;
        return answer;
    }
}

다른 사람의 문제풀이

//다른사람 풀이1 .replaceFirst() 이용
class Solution {
    public int solution(String before, String after) {
        for(int i = 0; i < before.length(); i++){
            after = after.replaceFirst(before.substring(i,i+1),"");
        }
        return after.length() == 0? 1: 0;
    }
}

//다른사람 풀이2
class Solution {
    public int solution(String before, String after) {
        int answer = 1;

        int[] alphas1 = new int[26];
        int[] alphas2 = new int[26];

        for(int i=0; i<before.length(); i++){
            alphas1[before.charAt(i)-'a']++;
            alphas2[after.charAt(i)-'a']++;
        }

        for(int i=0; i<alphas1.length; i++){
            if(alphas1[i]!=alphas2[i]) answer=0;
        }

        return answer;
    }
}

느낀점

처음에 String[] 으로 풀었는데, String보다 char이 더 빠르지 않을까? 라는 생각이들어서 char[]으로 풀고, 삼항연산자도 이용해서 작성해서 풀어보았다.

 

다른사람의 풀이를 보니엄청 간결해서 충격 받았다! .replaceFirst() 나도 기억해둬야겠다!

그리고 알파벳을 이용한 방법도 좋아서 기록해보았다!


문제 출처: 코딩테스트 연습 | 프로그래머스 스쿨 (programmers.co.kr)