Tesseractjh
한 걸음씩
Tesseractjh
전체 방문자
오늘
어제
  • 전체 (293)
    • IT (30)
      • JavaScript (7)
      • TypeScript (5)
      • React (5)
      • Next.js (3)
      • MongoDB (2)
      • Webpack (2)
      • HTML & CSS (1)
      • Git (0)
      • AWS (1)
      • 기타 (4)
    • 연습장 (259)
      • 백준(BOJ) 문제풀이 (185)
      • 프로그래머스 문제풀이 (61)
      • LeetCode 문제풀이 (2)
      • HackerRank 문제풀이 (7)
      • 낙서장 (3)
      • 기타 (1)
    • 프로젝트 (3)
      • 지뢰피하기 (1)
      • 키릴-라틴 문자 변환기 (1)
      • Flex & Grid (1)
    • 멋쟁이사자처럼 프론트엔드 스쿨 1기 (1)
      • 일기 & 회고록 (1)

인기 글

티스토리

hELLO · Designed By 정상우.
Tesseractjh

한 걸음씩

연습장/프로그래머스 문제풀이

[프로그래머스 Level 1] 완주하지 못한 선수 - JavaScript

2022. 4. 6. 00:35

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/42576

 

코딩테스트 연습 - 완주하지 못한 선수

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

programmers.co.kr

풀이

function solution(participant, completion) {
    const map = new Map();
    participant.forEach(name => map.set(name, (map.get(name) || 0) + 1));
    completion.forEach(name => map.set(name, (map.get(name) || 0) - 1));
    for (const [name, value] of map) {
        if (value) {
            return name;
        }
    }
}

참가자 배열을 순회하면서 이름이 나온 횟수를 map에 저장한다.

그리고 나서 완주자 배열을 순회하면서 이름이 나온 횟수만큼 map의 value에서 뺀다.

그렇게 하면 최종적으로 완주하지 못한 선수의 이름의 value는 1이고 나머지 이름은 모두 0이 된다.

map을 순회하면서 value가 1인 값의 key(이름)를 출력하였다.

 

이 문제는 sort로도 해결할 수 있지만 sort를 사용하면 O(NlogN) 시간이 걸리는 반면,

해시(Map)로 풀면 O(N) 시간이 걸린다.

저작자표시 비영리 (새창열림)

'연습장 > 프로그래머스 문제풀이' 카테고리의 다른 글

[프로그래머스 Level 2] 거리두기 확인하기 - JavaScript  (0) 2022.05.09
[프로그래머스 Level 2] 게임 맵 최단거리 - JavaScript  (0) 2022.05.09
[프로그래머스 Level 1] [1차] 비밀지도 - JavaScript  (0) 2022.05.06
[프로그래머스 Level 1] 신규 아이디 추천 - JavaScript  (0) 2022.04.23
[프로그래머스 Level 3] 다단계 칫솔 판매 - JavaScript  (0) 2022.04.11
    '연습장/프로그래머스 문제풀이' 카테고리의 다른 글
    • [프로그래머스 Level 2] 게임 맵 최단거리 - JavaScript
    • [프로그래머스 Level 1] [1차] 비밀지도 - JavaScript
    • [프로그래머스 Level 1] 신규 아이디 추천 - JavaScript
    • [프로그래머스 Level 3] 다단계 칫솔 판매 - JavaScript
    Tesseractjh
    Tesseractjh
    바닐라 자바스크립트를 좋아하는 개발자입니다

    티스토리툴바