알고리즘/프로그래머스

<프로그래머스> 완주하지 못한 선수

흰색텀블러 2024. 8. 18. 18:47

<링크>

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

<문제>

  • 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
  • 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

<제한사항>

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

<입력 및 출력>

 

 

<고려사항>

1. 카테고리가 해시, 큐인데.. 둘다 안썼다.

2. 동명이인의 경우를 따져야한다!! 안그러면 틀려요 ㅠㅠ

<풀이 - Java>

import java.util.Arrays;

class Solution {
	public String solution(String[] participant, String[] completion) {
        // 참가자 정렬 ㅎ
		Arrays.sort(participant);
        // 완주자 정렬 ㅎ
		Arrays.sort(completion);

		for (int i = 0; i < completion.length; i++) {
            // 같으면
			if (participant[i].equals(completion[i])) {
				// 계속 해주셈
                continue;
			} else {
                // 같지 않으면 그녀석 꺼내주세요 당신은 완주 못함 ㅠ
				return participant[i];
			}
		}
        // 근데 다돌았는데 return이 안되면 마지막 사람이 도착못한거겠징?
		return participant[participant.length - 1];
	}
}