자바스크립트 코딩테스트 강좌, DDR을 해보자

많은 기업들이 코딩 테스트를 통해 지원자의 알고리즘과 문제 해결 능력을 평가합니다. 이번 글에서는 자바스크립트를 활용하여 DDR(Dance Dance Revolution) 게임을 구현하는 알고리즘 문제를 풀어보겠습니다.

이 글에서는 문제의 이해, 해결 방법, 코드 작성 및 테스트 과정을 자세히 설명할 것입니다.

문제 설명

다음은 DDR 게임의 간단한 버전입니다. 게임은 아래와 같은 형식으로 진행됩니다.

사용자는 아래와 같은 4개의 화살표를 보고 해당 키를 눌러야 합니다:

  • ↑ (Up)
  • ↓ (Down)
  • ← (Left)
  • → (Right)

게임의 목표는 주어진 화살표 입력 순서에 따라 정확하게 키를 눌러 점수를 얻는 것입니다. 만약 잘못된 화살표를 누르면 점수를 잃게 됩니다.

당신은 n개의 화살표가 주어졌을 때, 사용자 입력을 받아 점수를 계산하는 함수를 작성해야 합니다. 이 함수는 사용자가 입력한 화살표가 정답 순서와 일치하는 경우 점수를 1점 추가하고, 틀린 경우 1점을 감점합니다.

입력 형식

        - 화살표 배열: ["↑", "↓", "←", "→"]
        - 사용자 입력 배열: ["↑", "↑", "←", "→", "↓"]
        

출력 형식

사용자의 최종 점수를 반환합니다.

문제 해결 과정

이 문제를 해결하기 위해 먼저 알고리즘을 설계해 보겠습니다. 문제를 해결하기 위한 단계는 다음과 같습니다.

  1. 화살표 배열과 사용자 입력 배열을 선언합니다.
  2. 점수를 유지하기 위한 변수를 초기화합니다.
  3. 사용자 입력을 순회하며 각 입력과 정답을 비교합니다.
  4. 정확한 입력일 경우 점수를 1점 올리고, 틀린 경우 1점을 감점합니다.
  5. 모든 입력을 확인한 후, 최종 점수를 반환합니다.

이제 알고리즘이 명확해졌으므로, 코드를 작성해 보겠습니다.

코드 구현


function calculateScore(correctArrows, userArrows) {
    let score = 0;

    for (let i = 0; i < userArrows.length; i++) {
        if (userArrows[i] === correctArrows[i]) {
            score += 1; // 정답
        } else {
            score -= 1; // 틀림
        }
    }

    return score; // 최종 점수 반환
}

// 예시 사용
const correctArrows = ["↑", "↓", "←", "→"];
const userArrows = ["↑", "↑", "←", "→", "↓"];

const finalScore = calculateScore(correctArrows, userArrows);
console.log("최종 점수는:", finalScore);
        

코드 설명

작성한 코드를 단계별로 설명하겠습니다.

1. 함수 정의

함수 calculateScore는 화살표 배열과 사용자 입력 배열을 매개변수로 받습니다. 점수를 계산하기 위해 score 변수를 0으로 초기화합니다.

2. 반복문을 통한 검사

for 루프를 사용하여 사용자 입력 배열을 순회합니다. 각 사용자의 입력이 정답 화살표와 일치하는지 확인합니다.

일치하는 경우에는 점수를 1점 추가하고, 일치하지 않는 경우에는 점수를 1점 감점합니다.

3. 최종 점수 반환

모든 사용자 입력을 검사한 후 score 값을 반환합니다. 이 값이 최종 점수입니다.

코드 테스트

코드가 올바르게 작동하는지 확인하기 위해 몇 가지 테스트 케이스를 만들어 보겠습니다.

테스트 케이스 1


const correct1 = ["↑", "↓", "←", "→"];
const user1 = ["↑", "↓", "←", "→"];

console.log("테스트 케이스 1 - 점수:", calculateScore(correct1, user1)); // 4
        

테스트 케이스 2


const correct2 = ["↑", "↓", "←", "→"];
const user2 = ["↑", "↑", "←", "→", "↓"];

console.log("테스트 케이스 2 - 점수:", calculateScore(correct2, user2)); // 2
        

테스트 케이스 3


const correct3 = ["↑", "↓", "←", "→"];
const user3 = ["→", "→", "→", "→"];

console.log("테스트 케이스 3 - 점수:", calculateScore(correct3, user3)); // -4
        

결론

이번 글에서는 자바스크립트를 사용하여 DDR 게임의 기본적인 알고리즘 문제를 해결해 보았습니다. 기초적인 문제 해결 방법과 코드를 작성하는 방법을 통해 자바스크립트의 기초를 더욱 확고히 할 수 있었습니다.

이 간단한 알고리즘 문제는 면접에서 자주 등장하는 유형의 문제 중 하나입니다. 따라서, 예제와 비슷한 문제를 많이 풀어보고, 자신만의 코드 스타일을 개발하는 것이 좋습니다. 감사합니다!