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

2025. 10. 22. 15:41·PS/프로그래머스

[문제 링크]

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제 설명

마라톤 참여자 배열 participant 와 완주자 배열 completion이 있을 때, 완주하지 못한 한 명을 구한다.

 

 

 

문제 풀이

1) 배열 사용(내가 푼 방식) 

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
      
        //참가자, 완주자 알파벳 순으로 정렬
        Arrays.sort(participant);
        Arrays.sort(completion);

        for(int i = 0; i < participant.length - 1; i++) { 
            if(!participant[i].equals(completion[i])) {
                return participant[i];
            }
        }
        return participant[participant.length - 1];
    }
}

참가자, 완주자 배열을 각각 알파벳 오름차순으로 정렬하고, 앞에서부터 하나씩 비교한다.

동일하지 않으면 participant 배열의 선수가 완주하지 못한 선수이므로 출력하고,

비교 후에도 다른게 없다면 participant 배열의 마지막 선수가 완주하지 못한 선수이다.

 

2) HashMap 사용

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        
        HashMap<String, Integer> hm = new HashMap<>();
        
        //map에 참가자 추가
        for(String p : participant) {
            hm.put(p, hm.getOrDefault(p, 0) + 1);
        }
        
        //map에서 완주한 선수 제거
        for(String c : completion) {
            hm.put(c, hm.get(c) - 1);
        }
        
        for(String key : hm.keySet()) {
            if(hm.get(key) != 0) {
                answer = key;
                break;
            }
        }
        
        return answer;
    }
}

Map의 참여자 모두를 넣고 value를 1씩 증가시킨다.(동명이인이 있을 수 있기 때문)

→ getOrDefault() 사용

 

완주자 배열 completion을 돌면서 map에서 해당 선수를 key로 가진 value를 1씩 감소해서 완주자를 제거한다.

마지막으로 map을 돌면서 value가 0 이 아닌 key를 찾아서 완주하지 못한 선수를 출력한다.

저작자표시 비영리 변경금지 (새창열림)

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

[프로그래머스][Java] 여행경로  (0) 2025.09.18
'PS/프로그래머스' 카테고리의 다른 글
  • [프로그래머스][Java] 여행경로
nyrimmm
nyrimmm
  • nyrimmm
    개발기록
    nyrimmm
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (89)
      • Java (6)
      • Spring & SpringBoot (3)
      • Network (1)
      • DataBase (0)
      • SQL (1)
      • IntelliJ (3)
      • Git (0)
      • 자료구조 & 알고리즘 (2)
      • 트러블 슈팅 (1)
        • Spring (1)
      • PS (71)
        • 백준 (26)
        • 프로그래머스 (2)
        • SQL (10)
        • 이코테 (33)
      • 후기 & 회고 (1)
  • 태그

  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
nyrimmm
[프로그래머스][Java] 완주하지 못한 선수
상단으로

티스토리툴바