230103 프로그래머스 완주하지 못한 선수(자바/자바스크립트)

샨티(shanti)·2023년 1월 3일
0

코딩테스트

목록 보기
15/35
post-custom-banner

매일 매일 하루 한 문제씩.
꾸준히 이어가는 코딩테스트 풀이 기록 ✅

오늘은 오전에 아이 등원을 시키고 엄마도 모셔다 드리는 바람에 코딩도장에 늦게 도착했다.
마음이 급해서 문제를 풀면서도 약간 실수가 있었는데, 그래도 아주 오래 고생하진 않고 좀 빠르게 실수를 잡아내서 풀었던 문제.

난이도는 높지 않은 문제인데, 매번 java에서 array를 sort하는 걸 헷갈려서 문제가 생김 ㅠㅠ.
자꾸 헷갈리지 말자...!

프로그래머스 코딩테스트 완주하지 못한 선수


문제.


java solution

유의!
왜 그런지는 모르곘지만... 이 문제는 import 문을 읽지 못해 통과가 되지 않았다.
고로 아래 답안을 그대로 프로그래머스에 넣고 돌린다면 통과가 되지 않을 것임.
하지만 제시된 테스트는 우선 통과했고, 예전에 풀었던 문제이기도 하고
또 다른 사람들의 풀이를 봤을 때 크게 문제가 없어보여 그대로 작성한다.

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";

        Arrays.sort(participant);
        Arrays.sort(completion);

        Queue<String> completionQueue = new LinkedList<>(Arrays.stream(completion).toList());

        for (int i = 0; i < completion.length; i += 1) {
            String name = completionQueue.poll();

            if (!participant[i].equals(name)) {
                answer = participant[i];
                break;
            }

            answer = participant[participant.length - 1];
        }

        return answer;
    }
}

javascript solution

자바에선 for 문의 범위를 크기가 작은 array에 맞추느라 좀 신경을 썼는데,
자바스크립트는 그 부담이 좀 줄기 때문에 아래와 같이 큰 array를 기준으로도 sort를 하고 index를 활용하기도 했다.

function solution(participant, completion) {
  const sortedParticipant = participant.sort();
  const sortedCompletion = completion.sort();

  const answer = sortedParticipant.find((value, index) => (value !== sortedCompletion[index]));

  return answer || sortedParticipant[sortedParticipant.length - 1];
}

얼른 주어진 문제들을 풀면서 좀 더 난이도를 높여나가야겠다.
난이도를 높이는게 부담은 되지만... 그래도 어렵게 배울수록 또 기억에 오-래 남을것이기에!
하루에 한 개씩 꾸준히 주어진 문제를 모두 풀고 얼른 점프업 하자!


profile
가벼운 사진, 그렇지 못한 글
post-custom-banner

0개의 댓글