Deep_Dev
article thumbnail

문제 설명

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

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

 

 

 


어떻게 로직을 짤까하다가.. 그냥 문자열이 1개라도 다르면 0을 return 하면 되니.. hashmap을 사용했다..

( 분명 더 쉬운 로직이 있을텐데 이거먼저 생각났음 )

 

풀고나서 다른사람 풀이보면서 내가 원하는 로직이 거기있었다 . .( 왜 생각못함 )


import java.util.*;
import java.util.HashMap;
class Solution {
    public int solution(String before, String after) {
        int answer = 1;
        HashMap<Character, Integer> map=new HashMap<>();
        for(char x:before.toCharArray()){
            map.put(x,map.getOrDefault(x,0)+1);
        }
        for(char x:after.toCharArray()){
            if(!map.containsKey(x)||map.get(x)==0) return 0;
            map.put(x, map.get(x)-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;
    }
}

배열에 담고.. 정렬해서 같으면 1, 다르면 0 리턴...