C# 코딩테스트 강좌, DDR을 해보자

이번 시간에는 C#을 활용하여 취업을 위한 알고리즘 문제를 해결해보는 시간을 가져보겠습니다. 주제는 많이들 즐겨하는 댄스 리듬 게임인 DDR(Dance Dance Revolution)을 바탕으로 한 문제를 다뤄보겠습니다. DDR 게임에서 요구되는 입력 패턴을 코드로 구현하고, 해당 패턴을 처리하는 알고리즘을 작성해보도록 하겠습니다.

문제 설명

당신은 DDR 게임의 패턴을 분석하는 개발자입니다. DDR에서는 각 방향판(상, 하, 좌, 우)에 해당하는 인풋을 받습니다. 입력은 특정 시간 간격으로 주어지는 일련의 방향 키 패턴으로 구성됩니다. 각 방향은 다음과 같이 나타낼 수 있습니다:

  • U: 위
  • D: 아래
  • L: 왼쪽
  • R: 오른쪽

당신에게 주어진 입력 패턴을 보고, 사용자가 얼마나 정확하게 해당 패턴을 입력했는지를 판단해야 합니다. 패턴의 길이와 일정 시간 내에 적절히 입력했는지를 체크하여 점수를 매기도록 하겠습니다.

입력 형식

  • 첫 번째 줄에는 패턴의 길이 N이 주어집니다. (1 ≤ N ≤ 100)
  • 두 번째 줄에는 N개의 문자로 구성된 패턴이 주어집니다.
  • 세 번째 줄에는 사용자의 입력 패턴 X가 주어집니다.

출력 형식

사용자의 입력이 패턴과 얼마나 일치하는지를 나타내는 정확도 점수를 출력합니다. 점수는 다음과 같이 계산됩니다.

  • 패턴의 길이와 사용자의 입력의 길이가 같을 때만 점수를 계산합니다.
  • 일치하는 문자마다 10점씩 부여합니다.
  • 일치하지 않는 경우, 해당 인덱스에서 점수를 잃고, 잃는 점수는 5점입니다.
  • 최종 점수를 출력합니다.

예시 입력

5
UDLRU
UDLRD

예시 출력

35

문제 해결 과정

이제 문제를 해결하기 위해 어떻게 코드를 작성할지 단계별로 살펴보겠습니다. 우선 요구되는 기능들을 정리해보겠습니다.

  1. 패턴의 길이(N)와 입력 패턴을 저장할 수 있는 변수를 선언합니다.
  2. N 길이만큼 패턴을 배열 또는 리스트로 저장합니다.
  3. 사용자의 입력 패턴을 배열 또는 리스트에 저장합니다.
  4. 입력 패턴과 기존 패턴을 비교하여 일치하는 부분을 체크하고 점수를 계산합니다.
  5. 최종 점수를 출력합니다.

C# 코드 작성

이제 위의 요구사항에 따라 C# 코드를 작성해보겠습니다.


using System;

class DDR
{
    static void Main()
    {
        // 패턴의 길이 N을 입력받기
        int N = int.Parse(Console.ReadLine());
        
        // DDR 패턴과 사용자 입력 패턴을 각각 저장할 문자열 배열 선언
        string pattern = Console.ReadLine();
        string userInput = Console.ReadLine();
        
        // 점수 변수 초기화
        int score = 0;
        
        // 입력 길이가 패턴과 같은지 체크
        if (N != userInput.Length)
        {
            Console.WriteLine("입력 길이가 패턴 길이와 일치하지 않습니다.");
            return;
        }

        // 패턴과 사용자 입력 비교하여 점수 계산
        for (int i = 0; i < N; i++)
        {
            if (pattern[i] == userInput[i])
            {
                score += 10; // 일치할 때마다 10점
            }
            else
            {
                score -= 5; // 불일치할 때마다 5점 삭감
            }
        }
        
        // 최종 점수 출력
        Console.WriteLine(score);
    }
}

위 코드는 상대적으로 간단하게 DDR 패턴을 입력받고 사용자 입력을 비교하여 점수를 계산하는 로직으로 작성되었습니다. 이 코드를 실행하면 사용자에게 패턴과 입력을 요구하고, 점수를 계산하여 출력합니다.

코드 설명

1. using System;: C#의 기본적 라이브러리를 사용하기 위한 선언입니다.

2. class DDR: DDR이라는 클래스를 정의합니다.

3. static void Main(): 프로그램의 진입점입니다. 모든 코드 실행이 여기서 시작됩니다.

4. 사용자의 입력을 int.Parse(Console.ReadLine())로 받아 정수형 변수 N에 저장합니다.

5. 패턴과 사용자 입력을 각각 받아 문자열로 저장합니다.

6. 점수 변수 score를 초기화합니다.

7. 사용자 입력의 길이가 패턴의 길이와 일치하는지 체크합니다. 맞지 않으면 프로그램을 종료합니다.

8. 패턴을 비교하여 일치할 때 10점을 부여하고, 불일치할 때 5점을 감소시키는 로직입니다.

9. 최종 점수를 출력합니다.

결론

이번 강좌에서는 DDR 패턴을 기반으로 문제를 구성하고, C#으로 이를 해결하는 방법에 대해 알아보았습니다. 알고리즘 문제 풀이를 통해 패턴 분석 및 점수 계산 로직을 작성해보았습니다. 이러한 문제를 풀면서 현재의 알고리즘 및 코드 작성 숙련도를 높일 수 있기를 바랍니다. 앞으로도 다양한 주제를 가지고 함께 공부해 나갑시다.