긴급 할 일을 맨 앞에 추가하기
자바스크립트 코딩테스트 문제로 array-mutation-methods 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.
할 일 목록 배열 tasks와 긴급 할 일 urgentTask가 주어질 때, 긴급 할 일을 목록의 맨 앞에 추가한 새 배열을 반환하는 addUrgentTaskFirst 함수를 작성하세요.
오늘의 메서드
- 오늘 배울 메서드는
Array.unshift()입니다. - 배열의 맨 앞에 하나 이상의 값을 추가할 때 사용합니다.
메서드 설명
unshift()는 배열의 시작 부분에 값을 추가합니다. 기존 요소들은 뒤쪽으로 한 칸씩 밀립니다.
이 문제에서는 기존 할 일 목록의 순서를 유지하면서, 새 긴급 할 일만 가장 앞에 놓아야 합니다.
기본 문법
arr.unshift(value)
arr.unshift(value1, value2)
사용 예시
const tasks = ["메일 확인", "회의 준비"];
tasks.unshift("장애 대응");
console.log(tasks); // ["장애 대응", "메일 확인", "회의 준비"]
주의할 점
unshift()는 원본 배열을 직접 변경합니다.unshift()의 반환값은 변경된 배열이 아니라 배열의 새 길이입니다.- 이 문제에서는 입력 배열
tasks를 바로 바꾸지 않도록 먼저slice()로 복사한 뒤 사용합니다.
제한사항
tasks의 길이는 0 이상 100 이하입니다.tasks의 각 원소는 길이 1 이상 30 이하인 문자열입니다.urgentTask는 길이 1 이상 30 이하인 문자열입니다.- 반환값은
urgentTask가 맨 앞에 추가된 새 배열입니다. - 기존
tasks안의 할 일 순서는 그대로 유지해야 합니다.
예시
- 입력:
tasks = ["메일 확인", "회의 준비"],urgentTask = "장애 대응"→ 출력:["장애 대응", "메일 확인", "회의 준비"] - 입력:
tasks = [],urgentTask = "첫 할 일"→ 출력:["첫 할 일"] - 입력:
tasks = ["리뷰"],urgentTask = "긴급 공지"→ 출력:["긴급 공지", "리뷰"]
힌트
- 먼저
tasks.slice()로 새 배열을 만들어 보세요. - 그 새 배열의 맨 앞에
urgentTask를 추가하면 됩니다. unshift()를 호출한 뒤에는 메서드의 반환값이 아니라 배열 변수 자체를 반환해야 합니다.
해설
이 문제의 핵심은 배열 맨 앞에 값을 넣는 방법을 익히는 것입니다.
push()가 배열의 뒤에 값을 추가한다면, unshift()는 배열의 앞에 값을 추가합니다. 예를 들어 ["메일 확인", "회의 준비"]에 "장애 대응"을 unshift()하면 결과 배열은 ["장애 대응", "메일 확인", "회의 준비"]가 됩니다.
다만 unshift()는 원본 배열을 직접 바꾸는 메서드입니다. 문제에서는 입력으로 받은 tasks를 그대로 바꾸기보다 새 배열을 만들어 반환하는 편이 더 안전합니다. 그래서 starter code처럼 const result = tasks.slice();로 복사본을 만든 뒤, result.unshift(urgentTask);를 실행하면 됩니다.
또 하나 주의할 점은 반환값입니다. result.unshift(urgentTask)의 결과는 배열이 아니라 새 길이입니다. 따라서 아래처럼 작성해야 합니다.
function addUrgentTaskFirst(tasks, urgentTask) {
const result = tasks.slice();
result.unshift(urgentTask);
return result;
}
배열이 비어 있어도 같은 방식으로 동작합니다. 빈 배열에 값을 unshift()하면 그 값 하나만 들어 있는 배열이 됩니다.
코드 작성
starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.
커스텀 테스트
함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]
실행 결과
아직 실행하지 않았습니다.
댓글
문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.