[99클럽] 99클럽 코테 스터디 2일차 TIL - 해시(Hash)

2024. 5. 21. 19:36·코딩테스트 연습/99클럽
728x90

 

오늘의 문제

프로그래머스 - 완주하지 못한 선수 (출처 하단 표기)

 

문제

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.

마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

 

제한사항

  • 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
  • completion의 길이는 participant의 길이보다 1 작습니다.
  • 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
  • 참가자 중에는 동명이인이 있을 수 있습니다.

입출력 예

participant completion return
["leo", "kiki", "eden"] ["eden", "kiki"] "leo"
["marina", "josipa", "nikola", "vinko", "filipa"] ["josipa", "filipa", "marina", "nikola"] "vinko"
["mislav", "stanko", "mislav", "ana"] ["stanko", "ana", "mislav"] "mislav"

 

풀이

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        
        Map<String, Integer> runner = new HashMap<>();
        for(String s: participant) {
            runner.put(s, runner.getOrDefault(s, 0) + 1);
        }
        
        for(String s: completion) {
            if(runner.keySet().contains(s)) {
                runner.replace(s, runner.get(s) - 1);
            }
        }
        
        for(Map.Entry<String, Integer> entry: runner.entrySet()) {
            if(entry.getValue() > 0) {
                answer += entry.getKey();
                break;
            }
        }
        return answer;
    }
}

 

문제의 조건에서 완주하지 못한 선수는 한 명뿐이기 때문에, HashMap을 기준으로 completion 배열에 존재하면 value의 값을 하나 빼는 형식으로 풀었다. completion 배열을 순회하고 나면 완주하지 못한 선수의 value 값은 1이 되기 때문에 전체 set에서 value 값이 0보다 크면 answer에 더하는 방식으로 작성하였다.

어제와 마찬가지로 Hash를 이용해서 푸는 문제였는데, Hash를 이용하면 시간 복잡도를 줄일 수 있기 때문에 효율이 좋은 방식이라는 걸 알 수 있었다. 해시에 대한 설명은 이 페이지에 따로 정리하였다.

 

 

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/courses/30/lessons/42576
728x90
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 연습 > 99클럽' 카테고리의 다른 글

[99클럽] 99클럽 코테 스터디 6일차 TIL - 힙(Heap)  (0) 2024.05.25
[99클럽] 99클럽 코테 스터디 5일차 TIL - 힙(Heap)  (0) 2024.05.24
[99클럽] 99클럽 코테 스터디 4일차 TIL - 스택(Stack)  (0) 2024.05.23
[99클럽] 99클럽 코테 스터디 3일차 TIL - 큐(Queue)  (0) 2024.05.22
[99클럽] 99클럽 코테 스터디 1일차 TIL - 해시(Hash)  (0) 2024.05.20
'코딩테스트 연습/99클럽' 카테고리의 다른 글
  • [99클럽] 99클럽 코테 스터디 5일차 TIL - 힙(Heap)
  • [99클럽] 99클럽 코테 스터디 4일차 TIL - 스택(Stack)
  • [99클럽] 99클럽 코테 스터디 3일차 TIL - 큐(Queue)
  • [99클럽] 99클럽 코테 스터디 1일차 TIL - 해시(Hash)
hxxzz
hxxzz
개발새발 안 되게 개발 노력 중
  • hxxzz
    개발새발
    hxxzz
  • 전체
    오늘
    어제
    • 분류 전체보기 (104)
      • Java (3)
      • Back-End (9)
        • Spring Boot (7)
        • DevOps (1)
        • Redis (1)
      • Computer Scrience (4)
        • Data Structrue (4)
        • Algorithm (0)
      • SQLD (3)
      • 코딩테스트 연습 (85)
        • Programmers (30)
        • 백준 (15)
        • etc. (0)
        • 99클럽 (40)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SpringBoot
    스택
    til
    코딩테스트 준비
    redission
    jpa
    Spring Boot
    Stack
    백준
    99클럽
    SQLD
    자료구조
    N+1 문제
    개발자 취업
    dfs
    BFS
    프로그래머스
    SQL
    java
    LeetCode
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
hxxzz
[99클럽] 99클럽 코테 스터디 2일차 TIL - 해시(Hash)
상단으로

티스토리툴바