본문 바로가기

HashMap8

의상(Lv.2) 문제 설명 입출력 예시 요약 각 의상의 카테고리마다 하나씩 다르게 착용하는 경우의 수 구하기 풀이 접근 방식 1. 각 카테고리에 해당하는 아이템의 개수 구하기 → 카테고리(key) : 개수(value) map 만들기(아무것도 착용하지 않는 경우의 수 추가) 2. 최소 하나의 의상은 착용해야 함 → 모든 카테고리에서 아무것도 고르지 않는 경우 제외 코드리뷰 import java.util.*; class Solution { public int solution(String[][] clothes) { HashMap map = new HashMap(); for(int i = 0; i < clothes.length; i++) { map.put(clothes[i][1], map.getOrDefault(clothes[.. 2024. 3. 22.
완주하지 못한 선수(Lv.1) 문제 설명 입출력 예시 요약 참가했는데 완주하지 못한 선수의 이름 찾기 풀이 접근 방식 1. 참가자 map 만들어서 완주자 배열에 없는 이름 찾기 → hashmap과 keySet() 활용 코드리뷰 import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; HashMap part = new HashMap(); for(String str : participant) { part.put(str, part.getOrDefault(str, 0) + 1);// map에 getOrDefault를 통해 기본 value = 1로 세팅 } for(String s.. 2024. 3. 21.
크레인 인형뽑기 게임(Lv.1) H3 중제목 입출력 예시 요약 바구니에 2개의 같은 인형이 위치하면 사라짐 풀이 문제 해석 넣기 전 바구니의 개수가 1개 이상일 경우, 뽑은 인형과 비교해서 같으면 넣지 않고 바구니의 담긴 마지막 인형 제거 접근 방식 1. moves = col+1로 생각 → 열의 번호(moves[i])가 1번부터 시작 2. moves[i]에 해당하는 열의 row를 최대 배열 크기만큼 순회 → 0은 인형이 없는 것을 뜻하기 때문에 0이 아닐때까지 반복해서 찾는다. 코드리뷰 import java.util.*; class Solution { public int solution(int[][] board, int[] moves) { int count = 0; List list = new ArrayList();// 바구니로 사용할.. 2024. 3. 21.
키패드 누르기(Lv.1) 문제 설명 입출력 예시 요약 1,4,7은 왼손 3,6,9는 오른손 나머지는 가까운 손이 누른다. 풀이 문제 해석 좌표로 생각하고 오른쪽 왼쪽 이동한 칸 수 계산하기 접근 방식 1. 각 번호를 row와 col 형식의 좌표로 구성 → 1번: (0, 0), 2번: (0, 1), ... , 0번: (3, 1) 2. 왼손 오른손의 시작위치 설정 → 왼손: (3, 0), 오른손(3, 2) 3. 1,4,7은 왼손 3,6,9는 오른손 나머진 가까운 손 → 누를 번호와 각 손의 위치를 계산해서 가까운 위치를 해당 번호 좌표로 변경 코드리뷰 import java.util.*; class Solution { class HandPosition {// 손의 위치를 담을 객체 클래스 정의 int row; int col; publ.. 2024. 3. 21.
성격 유형 검사하기(Lv.1) 문제 설명 입출력 예시 요약 4가지 질문 유형에 따른 점수를 계산해서 성격유형 return 풀이 문제 해석 알파벳 순서와 점수에 따라 나눠서 계산하기 접근 방식 1. 질문 유형을 2개로 나누기 → [ RT, CF, MJ, AN ] -> [ R, T, C, F, M, J, A, N ] 2. 점수에 따라 각 알파벳에 해당하는 값 증가 → RT 7의 경우: T + 3 3. 알파벳 순서 고려 → 만약 R과 T의 점수가 같은 경우 R 선택 코드리뷰 import java.util.*; class Solution { public String solution(String[] survey, int[] choices) { HashMap map = new HashMap(); String[] arr = {"R", "T", ".. 2024. 3. 21.
신고 결과 받기(Lv.1) 문제 설명 입출력 예시 요약 k번 이상 신고당한 유저는 이용이 정지되고, 해당 유저를 신고한 유저에게 신고 메일이 발송된다. id_list 순서대로 신고 메일을 받은 횟수를 return 풀이 문제 해석 중복된 신고는 제외하고 신고 받은 횟수로 이용정지 유저를 구하고 해당 유저를 신고한 유저의 value += 1 접근 방식 1) report 중복 제거 → set으로 담아서 중복 제거 2) 이용 정지 유저 구하기 → 신고 받은 유저 map 생성 후 k와 비교해서 set에 저장 3) 이용 정지 유저를 신고한 유저의 value += 1 → report의 요소를 split 해서 [1]번째 index에 해당하는 유저가 신고당한 유저라면, [0]번째 index에 해당하는 유저의 value += 1 코드 리뷰 impo.. 2024. 3. 19.