엘리베이터 명령 뒤 최종 층수

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

today easy net-displacement 함수명: finalFloorAfterCommands 제한 시간: 200ms

엘리베이터의 시작 층수와 위아래 이동 명령이 주어질 때 마지막에 몇 층에 도착하는지 구하는 문제입니다.

문제 설명

정수 startFloor와 명령 문자열 commands가 주어집니다.

commands는 다음 두 글자로만 이루어집니다.

  • "U": 현재 층에서 1층 올라갑니다.
  • "D": 현재 층에서 1층 내려갑니다.

명령을 왼쪽부터 순서대로 모두 수행했을 때 최종 층수를 반환하는 finalFloorAfterCommands 함수를 작성하세요.

예를 들어 시작 층수가 3이고 명령이 "UUDDUD"라면, 위로 2번, 아래로 2번, 위로 1번, 아래로 1번 이동하므로 다시 3층이 됩니다.

제한사항

  • startFloor-100,000 이상 100,000 이하의 정수입니다.
  • commands의 길이는 0 이상 100,000 이하입니다.
  • commands"U""D"로만 이루어집니다.
  • 빈 문자열이 들어오면 아무 이동도 하지 않은 것이므로 startFloor를 그대로 반환합니다.

예시

  • 입력: startFloor = 3, commands = "UUDDUD" → 출력: 3
  • 입력: startFloor = 0, commands = "UUUD" → 출력: 2
  • 입력: startFloor = -2, commands = "DUU" → 출력: -1
  • 입력: startFloor = 5, commands = "" → 출력: 5

힌트

  • 현재 층수를 하나 변수에 저장해 두세요.
  • 문자열을 한 글자씩 보면서 U+1, D-1 하면 됩니다.
  • 모든 명령을 처리한 뒤 남은 현재 층수가 정답입니다.

해설

이 문제는 명령을 순서대로 그대로 시뮬레이션하면 됩니다.

현재 층수를 startFloor로 시작한 뒤, 문자열 commands를 왼쪽부터 한 글자씩 확인합니다.

  • U를 만나면 현재 층수에 1을 더합니다.
  • D를 만나면 현재 층수에 1을 뺍니다.

예를 들어 startFloor = -2, commands = "DUU"라면

  • D-3
  • U-2
  • U-1

이므로 최종 답은 -1입니다.

문자열을 한 번만 순회하므로 시간 복잡도는 O(n)이고, 추가 공간은 O(1)입니다.

코드 작성

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

JavaScript 에디터 로딩 중...

커스텀 테스트

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

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

실행 결과

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

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

댓글

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