두개의 문자열이 주어질 때, 문자열의 순서를 바꿨을 때 문자열이 같아진다면 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 |