Code.Dev_MH
DevMHK
Code.Dev_MH
전체 방문자
오늘
어제
  • 개발자의 일상 (40)
    • Language (5)
      • Java (4)
      • Kotlin (1)
      • Python (0)
    • Back-End (1)
      • Spring (1)
      • Django (0)
      • Error (0)
    • Infra (0)
      • Docker (0)
      • CI, CD (0)
      • AWS (0)
    • CS (12)
      • 컴퓨터 구조(Computer Architectur.. (12)
      • 운영 체제(OS) (0)
      • 시스템소프트웨어(SystemSoftware) (0)
      • 네트워크(Network) (0)
      • 소프트웨어공학(Software Engineerin.. (0)
      • 데이터베이스(DataBase) (0)
      • 자료구조(Data Structure) (0)
      • 알고리즘(Algorithm) (0)
    • Git (0)
    • Algorithm (21)
      • 프로그래머스 (5)
      • 백준 (16)
      • 코딩테스트 후기 (0)
    • 회고 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바와비교
  • Greedy
  • 코틀린장점
  • 제로베이스백엔드스쿨
  • 다이나믹프로그래밍
  • 백준
  • 코틀린사용이유
  • java
  • 너비우선탐색
  • 프로그래머스
  • cs
  • BFS
  • 브루트포스
  • 그리디
  • 우선순위 큐
  • Priority Queue
  • INT
  • dp
  • computer architecture
  • 컴퓨터구조

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Code.Dev_MH

DevMHK

[프로그래머스] 완주하지 못한 선수
Algorithm/프로그래머스

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

2022. 10. 27. 23:13

문제

완주하지 못한 선수
https://programmers.co.kr/learn/courses/30/lessons/42576?language=java

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

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

제한 사항

  • 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.
  • 작업 진도는 100 미만의 자연수입니다.
  • 작업 속도는 100 이하의 자연수입니다.
  • 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.

생각해보기

  • HashMap에다가 참가자들을 넣어준다.

  • 완주자들을 HashMap에서 빼주고 참가자들 중 완주하지 못한 선수 즉, value가 0이 아닌 값을 반환한다.

Code

이번 문제는 무조건 1명만 완주를 못했다는 가정이 있기 때문에 더 쉬운 문제라고 생각.
또한, 예제 3번에 동명이인이 있기 때문에 key에 대한 value를 대응시켜주는 구조인 Hash table로 푸는 방법이 바람직하다고 생각한다.

Java

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = ""; // 정답 담을 변수
        HashMap<String, Integer> map = new HashMap<>();
        // participant를 map에 담아줌
        for (String item: participant) {
            map.put(item, map.getOrDefault(item, 0) + 1);
        }

        // map에서 completion 확인하며 감소
        for(String item: completion) {
            if (map.containsKey(item)) {
                map.put(item, map.get(item) - 1);
            }
        }
        // completion 후 남은 participant 확인
        for (String item: participant) {
            if (map.get(item) != 0) {
                answer = item;
            }
        }
        return answer;
    }
}

테스트 결과

반응형

'Algorithm > 프로그래머스' 카테고리의 다른 글

[프로그래머스] 모의고사  (0) 2023.01.10
[프로그래머스] k번째수  (0) 2022.12.30
[프로그래머스] 더 맵게  (0) 2022.12.29
[프로그래머스] 기능개발  (0) 2022.12.28
    'Algorithm/프로그래머스' 카테고리의 다른 글
    • [프로그래머스] 모의고사
    • [프로그래머스] k번째수
    • [프로그래머스] 더 맵게
    • [프로그래머스] 기능개발
    Code.Dev_MH
    Code.Dev_MH
    Back-End 개발자가 되기 위한 개발 노트(Java)

    티스토리툴바