- 후보 a,b,c,d,e
- 투표용지에 반 학생들이 선택한 후보가 쓰여져있고, 학급 회장을 출력하는 문제
- getOrDefault를 활용함
public char solution(int n, String s){
char answer;
HashMap<Character, Integer> map = new HashMap<>();
for(char x : s.toCharArray()){
map.put(x, map.getOrDefault(x,0) + 1);
}
int max - Integer.MIN_VALUE;
for(char key : map.keySet()){
if(map.get(key) > max){
max = map.get(key);
answer = key;
}
}
return answer;
}
- 애너그램
두 string을 받아서 애너그램 조합이 가능한지 출력하기
- toCharArray() 사용해서 문자열을 하나씩 쪼개 hashmap에 넣어줌
- count세서 비교해주기
> 두번째 string에 있으면 count -1 해줌
> 만약 없는 character가 나오거나 count가 0보다 작으면 no 출력
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";
else
map.put(x, map.get(x)-1);
}
}
- 매출액의 종류(*)
- lt는 처음 0부터 rt는 k-1부터 시작함
- 처음에는 k-2전까지 돌며 hashmap에 count를 해줌
- rt에서 map.size를 사용해 answer에 갯수 넣어줌
- map[lt] count를 -1 해줘서 삭제(이때, 해당 키값이 0이면 아예 삭제해줘야함)
- lt와 rt 하나씩 증가시켜서 진행
public ArrayList<Integer> solution(int n, int k, int[] arr){
ArrayList<Integer> answer = new ArrayList<>();
HashMap<Integer,Integer> map = new HashMap<>();
for(int i=0; i<k-1; i++){
hm.put(arr[i], hm.getOrDefault(arr[i],0)+1);
} //k-2 전까지 넣어줌
int lt=0;
for(int rt=k-1; rt<n; rt++){
hm.put(arr[rt], hm.getOrDefault(arr[rt],0)+1);
answer.add(hm.size());
hm.put(arr[lt], hm.get(arr[lt])-1); //lt를 이동시키고, 이전 사항을 삭제 해줌
if(hm.get(arr[lt]) == 0)
hm.remove(arr[lt]); // 값이 0이면 키를 삭제해줘야함
lt++;
}
return answer;
}
'코테 준비-문제풀기' 카테고리의 다른 글
그리디 - JAVA 프로그래머스 풀어보기[테스트용] / 체육복 (0) | 2022.04.14 |
---|---|
Greedy (0) | 2022.04.13 |
프로그래머스 - 전화번호 목록 (자바/java) (0) | 2022.02.23 |
프로그래머스 - 완주하지 못한 선수_해시맵(HashMap) 사용해 풀기 (0) | 2022.02.06 |
프로그래머스 완주하지 못한 선수 - java ver (0) | 2021.08.29 |