교대로 깜빡이는 신호인지 확인하기

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

today easy alternation-check 함수명: isAlternatingSignal 제한 시간: 200ms

문제 설명

문자열 signal이 주어질 때, 인접한 두 문자가 항상 서로 다르면 true, 하나라도 같으면 false를 반환하는 isAlternatingSignal 함수를 작성하세요.

예를 들어 "RGRG"는 매번 다른 문자가 이어지므로 true입니다. 반면 "RRGG"는 맨 앞의 R 두 개가 연속으로 같으므로 false입니다.

제한사항

  • signal의 길이는 0 이상 100,000 이하입니다.
  • signal은 영문 대문자로만 이루어집니다.
  • 시작 문자는 무엇이든 상관없습니다.
  • 반환값은 교대 패턴이면 true, 아니면 false입니다.

예시

  • 입력: "RGRG" → 출력: true
  • 입력: "RRGG" → 출력: false
  • 입력: "B" → 출력: true
  • 입력: "" → 출력: true

힌트

  • 문자열 전체 패턴을 미리 정해 둘 필요는 없습니다.
  • 현재 문자와 바로 앞 문자만 비교해도 충분합니다.
  • 같은 문자가 연속으로 한 번이라도 나오면 바로 답을 낼 수 있습니다.

해설

이 문제의 핵심은 인접한 문자끼리만 검사하면 된다는 점입니다.

문자열이 교대로 이루어졌는지 확인하려면, 각 위치에서 바로 이전 문자와 현재 문자만 비교하면 됩니다.

  1. 인덱스 1부터 문자열 끝까지 순회합니다.
  2. signal[i]signal[i - 1]를 비교합니다.
  3. 두 문자가 같으면 교대 패턴이 깨졌으므로 즉시 false를 반환합니다.
  4. 끝까지 같은 인접 쌍이 없으면 true를 반환합니다.

예를 들어 "XYXYX"는:

  • XY 다름
  • YX 다름
  • XY 다름
  • YX 다름

따라서 true입니다.

반대로 "ABBA"는:

  • AB 다름
  • BB 같음 → 즉시 false

이 방식은 문자열을 한 번만 보므로 시간 복잡도는 O(n)이고, 추가 공간은 거의 쓰지 않아 O(1)입니다.

코드 작성

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

JavaScript 에디터 로딩 중...

커스텀 테스트

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

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

실행 결과

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

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

댓글

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