728x90

두개의 문자열이 주어질 때, 문자열의 순서를 바꿨을 때 문자열이 같아진다면 1을 반환 아니라면 0 반환

 

>map으로 각 문자들을 key값으로 문자의개수를 value값으로 저장하고 다른 문자열과 같은지 비교  

public int solution(String before, String after) {

Map<Character,Integer> map = new HashMap<Character, Integer>();

for (int i = 0; i < before.length(); i++) {

map.put(before.charAt(i), map.getOrDefault(before.charAt(i), 0)+1);

}

for (int i = 0; i < after.length(); i++) {

if(!(map.containsKey(after.charAt(i)))||map.size()==0) {

return 0;

}

if(map.get(after.charAt(i))==1) {

map.remove(after.charAt(i));

}else {

map.put(after.charAt(i), map.get(after.charAt(i))-1);

}

}

return 1;

}

map에넣은 데이터를 after의 char들을 키 값으로 remove하면서 비교하였다. 

 

>map을 before의 map, after의 map 2개를 만들어서 .equals 함수로 같은지 비교하는게 더 편하다.    

public int solution(String before, String after) {

Map<Character,Integer> map = new HashMap<Character, Integer>();

Map<Character,Integer> map2 = new HashMap<Character, Integer>();

for (int i = 0; i < before.length(); i++) {

map.put(before.charAt(i), map.getOrDefault(before.charAt(i), 0)+1);

}

for (int i = 0; i < after.length(); i++) {

map2.put(after.charAt(i), map2.getOrDefault(after.charAt(i), 0)+1);

}

if(map.equals(map2))

return 1;

else return 0;

}

다른사람의 풀이 중 생각지 못한 방법을 발견했다. 

> 두 문자열을 정렬하여 같은지 비교하면 된다.

public int solution3(String before, String after) {

char[] arr = before.toCharArray();

char[] arr2 = after.toCharArray();

Arrays.sort(arr);

Arrays.sort(arr2);

if(arr.equals(arr2))return 1;

return 0;

}

 

'Java > Coding Test' 카테고리의 다른 글

외계어 사전  (0) 2023.09.12
특이한 정렬 문제풀이  (1) 2023.09.12
팩토리얼  (0) 2023.09.11
숫자 찾기 문제풀이  (0) 2023.09.10
피자 나눠먹기(2) 문제풀이 (with.유클리드 호제법)  (0) 2023.09.10

+ Recent posts