코테 준비-문제풀기

해쉬- 학급회장/ 애너그램/ 매출액의 종류 *

FireStone 2022. 4. 5. 01:20

- 후보 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;
    }