[프로그래머스] 21 : 신고 결과 받기 | 최댓값과 최솟값

서예진·2024년 2월 8일
0

목차💻

▸ 신고 결과 받기
▸ 최댓값과 최솟값


💡신고 결과 받기 : Lv.1

▼ 문제

출처: 프로그래머스 코딩테스트 연습 > 2022 KAKAO BLIND RECRUITMENT > 신고 결과 받기

▼ 내 풀이

  • 신고받은 유저를 key로 신고한 유저를 value로 이루어진 map을 만들었다. 동일한 유저에 대한 신고횟수를 1번으로 처리하기 위해 HashSet을 value로 사용했다.
  • 또한, 마지막에 각 유저별 메일을 받은 횟수를 배열로 반환하기 떄문에 유저별 index가 담긴 map을 만들었다.
import java.util.Map;
import java.util.HashMap;
import java.util.HashSet;

class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        Map<String, HashSet<String>> map = new HashMap<>();
        Map<String, Integer> usermap = new HashMap<>();
        int[] answer = new int[id_list.length];
        
        for(int i = 0; i < id_list.length; i++){
            map.put(id_list[i], new HashSet<>());
            usermap.put(id_list[i], i);
        }
        
        for(String s : report){
            String[] arr = s.split(" ");
            String reportUser = arr[0];
            String reportedUser = arr[1];
            map.get(reportedUser).add(reportUser);
        }
        
        for (int i = 0; i < id_list.length; i++) {
            HashSet<String> send = map.get(id_list[i]);
            if (send.size() >= k) {
                for (String name : send) {
                    answer[usermap.get(name)]++;
                }
            }
        }
                
        return answer;
    }
}

💡최댓값과 최솟값 : Lv.2

▼ 문제

출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 최댓값과 최솟값

▼ 내 풀이

  • 다른 문제에서 많이 마주한 문제 유형이여서 비교적 쉽게 풀 수 있었다.
  • String.join 메서드를 사용하고싶었지만 프로그래머스 환경에 의해 사용하지 못해 Stringbuilder를 사용했다.
class Solution {
    public String solution(String s) {
        String[] arr = s.split(" ");
        StringBuilder stringBuilder = new StringBuilder();
        
        //String 배열 int 배열로 변환
        int[] intarr = new int[arr.length];
        for(int i = 0; i < arr.length; i++){
            intarr[i] = Integer.parseInt(arr[i]);
        }
        
        //최대 최소 찾기
        int max = intarr[0];
        int min = intarr[1];
        for(int i = 0; i < intarr.length; i++){
            if(max < intarr[i]){
                max = intarr[i];
            }
            if(min > intarr[i]){
                min = intarr[i];
            }
        }
        
        int[] answer = new int[2];
        answer[0] = min;
        answer[1] = max;
        
        stringBuilder.append(min);
        stringBuilder.append(" ");
        stringBuilder.append(max);
        
        return String.valueOf(stringBuilder);
    }
}
profile
안녕하세요

0개의 댓글