처음 다시 등장한 배지

자바스크립트 코딩테스트 문제로 first-repeat 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.

today easy first-repeat 함수명: solution 제한 시간: 200ms

배지 번호 목록을 앞에서부터 확인할 때, 가장 먼저 다시 등장한 배지 번호를 찾는 solution 함수를 작성하세요.

중복이 전혀 없으면 문자열 "clean"을 반환하면 됩니다.

제한사항

  • badges는 배지 번호가 담긴 문자열 배열입니다.
  • 배열 길이는 1 이상 100,000 이하입니다.
  • 각 배지 번호는 길이 1 이상 20 이하의 문자열입니다.
  • 대소문자는 구분합니다.
  • 어떤 배지 번호가 두 번 이상 나오더라도, 두 번째 등장 시점이 가장 빠른 번호를 반환해야 합니다.
  • 중복이 없으면 "clean"을 반환합니다.

예시

  • 입력: ["A1", "B2", "C3", "B2", "D4"] → 출력: "B2"
  • 입력: ["red", "blue", "red", "blue"] → 출력: "red"
  • 입력: ["solo"] → 출력: "clean"

힌트

  • 이미 본 배지 번호를 빠르게 확인할 수 있는 자료구조를 떠올려 보세요.
  • 배열을 왼쪽부터 한 번만 보면서도 정답을 찾을 수 있습니다.

해설

이 문제의 핵심은 처음 등장한 중복 자체가 아니라, 두 번째로 나타나는 시점이 가장 빠른 배지 번호를 찾는 것입니다.

예를 들어 ["red", "blue", "red", "blue"]에서는 redblue가 모두 중복되지만, red가 세 번째 위치에서 먼저 다시 등장하므로 정답은 "red"입니다.

가장 간단한 방법은 빈 Set을 하나 만들고 배열을 앞에서부터 순회하는 것입니다.

  1. 현재 배지 번호가 Set에 이미 있으면, 그 번호가 가장 먼저 다시 등장한 배지이므로 바로 반환합니다.
  2. 없다면 Set에 추가합니다.
  3. 끝까지 중복이 없으면 "clean"을 반환합니다.

이 방식은 각 배지를 한 번씩만 확인하므로 효율적으로 동작합니다.

코드 작성

starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.

JavaScript 에디터 로딩 중...

커스텀 테스트

함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]

아직 실행하지 않았습니다.

실행 결과

아직 실행하지 않았습니다.

예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.

댓글

문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.