Algorithm (Java)/인프런 알고리즘강의
[인프런/알고리즘] HashMap - 아나그램
무럭무럭새싹
2023. 4. 26. 17:27
문제
코드
package prep.test.coding;
import java.util.HashMap;
import java.util.Scanner;
public class Anagram {
public String solution(String str1, String str2) {
HashMap<Character, Integer> map = new HashMap<>();
for(char idx : str1.toCharArray()) {
map.put(idx, map.getOrDefault(idx,0)+1);
}
for(char idx : str2.toCharArray()) {
// 만약 str2에 있는 문자가 map의 key 중에 없거나
// 해당 key의 value가 0이면
if(!map.containsKey(idx) || map.get(idx)==0 ) {
return "NO";
}
map.put(idx, map.getOrDefault(idx, 0) -1);
}
return "YES";
}
public static void main(String[] args) {
Anagram T = new Anagram();
Scanner kb = new Scanner(System.in);
String str1 = kb.next();
String str2= kb.next();
System.out.println(T.solution(str1, str2));
}
}
로직:
- str1과 str2이 아나그램이라면,
- str1을 구성하는 문자를 key, 각 문자의 갯수를 value로 하는 map을 만든 후
- str2 -> .toCharArray를 통해 char[] 배열로 만든 후, 해당 배열을 돌면서 map에서 일치하는 문자를 만날 때마다 갯수를 -1씩 줄여나갈 수 있어야함
- 만약 map에 해당 key가 존재하지 않거나, 해당 key로 검색되는 value의 값이 0이라면 아나그램이 아니므로 바로 return
- str2배열을 끝까지 돌때까지 위 조건에 걸리지 않는다면, 아나그램이므로 "YES" return
학습내용
HashMap 메소드
- getOrDefault
- containsKey(키명): hashmap의 key 중 해당 key가 있는지 확인 (boolean반환)
- put(key, value)
출처
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 - 인프런 | 강의
자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성
www.inflearn.com