엘리베이터 명령 뒤 최종 층수
자바스크립트 코딩테스트 문제로 net-displacement 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.
엘리베이터의 시작 층수와 위아래 이동 명령이 주어질 때 마지막에 몇 층에 도착하는지 구하는 문제입니다.
문제 설명
정수 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→-3U→-2U→-1
이므로 최종 답은 -1입니다.
문자열을 한 번만 순회하므로 시간 복잡도는 O(n)이고, 추가 공간은 O(1)입니다.
코드 작성
starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.
JavaScript
에디터 로딩 중...
커스텀 테스트
함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]
아직 실행하지 않았습니다.
실행 결과
아직 실행하지 않았습니다.
예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.
댓글
문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.