public String solution(String s1, String s2){
String answer = "YES";
HashMap<Character, Integer> map = new HashMap<>();
for(char x : s1.tocharArray()){
map.put(x, map.getOrDefault(x, 0)+1);
}
for(char x : s2.tocharArray()){
if(!map.containsKey(x) || map.get(x) == 0)
return "NO";
map.put(x, map.get(x)-1);
}
return answer;
}
public String solution(String s1, String s2)
HashMap<Character, Integer> map = new HashMap<>();
for(char x: s1.tocharArray()){
map.put(x, map.getOrDefault(x, 0)+1);
}
입력받은 String형식의 s1을 char형식의 배열에 저장한다.
그 후, map.getOrDefault() 메소드를 이용해, x의 값이 있다면 x의 Value를, 없다면 0을 Key값으로 얻고 +1 을 해준다.
for(char x : s2.tocharArray()){
if(!map.containsKey(x) || map.get(x) == 0 )
return "NO";
map.put(x, map.get(x)-1);
}
입력받은 String형식의 s2를 char형식의 배열에 저장한다.
그 후, 위의 for을 이용해 저장한 map의 key값이 존재하지 않거나, map.get(x)의 값이 0이 된다면, 문제에서 만족하는 조건이 되지 않는 것을 의미하므로 "NO"를 반환한다.
if문이 통과가 된다면 map.put을 이용해 x의 Value값에서 1을 빼준다.
package algolecture;
import java.util.HashMap;
import java.util.Scanner;
public class Main32 {
public String solution(String s1, String s2){
String answer = "YES";
HashMap<Character, Integer> map = new HashMap<>();
// 제네릭 타입 생략가능!
for(char x : s1.toCharArray()){
System.out.println(x);
map.put(x, map.getOrDefault(x,0)+1);
}
for(char x : s2.toCharArray()){
System.out.println(x);
if(!map.containsKey(x) || map.get(x) ==0)
return "NO";
map.put(x, map.get(x)-1);
}
return answer;
}
public static void main(String[] args) {
Main32 T = new Main32();
Scanner kb = new Scanner(System.in);
String a = kb.next();
String b = kb.next();
System.out.print(T.solution(a,b));
}
}