조건문의 중첩 구조와 실전 활용: C# 가위바위보 게임 구현

중첩 if 조건문

if-else 문 안에 또 다른 if 문이 포함된 구조를 중첩 if (nested if)라고 합니다. 이 구조는 바깥 조건이 참일 때만 안쪽 조건을 평가하며, 각 분기에서 단 하나의 실행 경로만 선택됩니다.

기본 문법 구조는 다음과 같습니다.


if (조건1)
{
    if (조건2)
    {
        if (조건3)
        {
            // 조건1,2,3 모두 참일 때 실행
        }
        else
        {
            // 조건1,2는 참, 조건3은 거짓일 때 실행
        }
    }
    else
    {
        // 조건1은 참, 조건2는 거짓일 때 실행
    }
}
else
{
    // 조건1이 거짓일 때 실행
}

실전 예제: 두 수 비교 (중첩 if 사용)

두 정수 a와 b를 비교하는 프로그램을 중첩 if로 구현할 수 있습니다. 먼저 a와 b가 같은지 여부를 바깥 조건으로 판별하고, 같지 않은 경우에만 크기 비교를 수행합니다.


using System;

class Program
{
    static void Main()
    {
        // 사용자 입력
        Console.Write("a 값을 입력하세요: ");
        int a = int.Parse(Console.ReadLine());
        Console.Write("b 값을 입력하세요: ");
        int b = int.Parse(Console.ReadLine());

        // 중첩 if를 이용한 비교
        if (a != b)
        {
            if (a > b)
            {
                Console.WriteLine("{0}이(가) {1}보다 큽니다.", a, b);
            }
            else
            {
                Console.WriteLine("{0}이(가) {1}보다 작습니다.", a, b);
            }
        }
        else
        {
            Console.WriteLine("{0}과(와) {1}은(는) 같습니다.", a, b);
        }
    }
}

중첩 if 작성 시 권장 규칙

  • 가독성을 위해 모든 if/else 블록에 중괄호({})를 생략하지 않습니다.
  • 짝이 되는 if와 else는 동일한 들여쓰기 수준으로 정렬합니다.
  • 내부의 if 구조는 바깥 구조보다 한 단계 들여쓰기하여 계층을 시각적으로 구분합니다.

종합 예제: 가위바위보 게임

사용자와 컴퓨터가 대전하는 가위바위보 게임을 구현합니다. 핵심은 두 가지입니다. 첫째, 컴퓨터의 랜덤 선택, 둘째, 선택 결과에 따른 승패 판단입니다.

컴퓨터는 1~3 사이의 난수를 생성하여 각각 '가위', '바위', '보'에 매핑합니다. 승패 판단은 중첩 if를 사용하여 구현합니다.


using System;

class Program
{
    static void Main()
    {
        // 1. 변수 선언
        string computerChoice, userChoice;

        // 2. 사용자 입력
        Console.Write("가위, 바위, 보 중 하나를 입력하세요: ");
        userChoice = Console.ReadLine();

        // 3. 컴퓨터 랜덤 선택 (1: 바위, 2: 가위, 3: 보)
        int randValue = new Random().Next(1, 4);
        if (randValue == 1)
            computerChoice = "바위";
        else if (randValue == 2)
            computerChoice = "가위";
        else
            computerChoice = "보";

        Console.WriteLine("컴퓨터의 선택: " + computerChoice);

        // 4. 승패 판단 (중첩 if 사용)
        if (computerChoice != userChoice)
        {
            // 컴퓨터가 이기는 3가지 경우
            if ((computerChoice == "바위" && userChoice == "가위") ||
                (computerChoice == "가위" && userChoice == "보") ||
                (computerChoice == "보" && userChoice == "바위"))
            {
                Console.WriteLine("컴퓨터 승리!");
            }
            else
            {
                Console.WriteLine("사용자 승리!");
            }
        }
        else
        {
            Console.WriteLine("비겼습니다.");
        }
    }
}

이 프로그램은 중첩 if와 논리 연산자(&&, ||)를 함께 사용하여 복잡한 조건을 간결하게 표현합니다. 바깥 if로 무승부와 승부를 먼저 구분하고, 승부일 경우 다시 3가지 하위 조건으로 컴퓨터 승리 여부를 판별합니다.

중첩 if는 강력하지만, 깊이가 깊어질수록 코드 복잡도가 증가하므로 가능하면 간결한 조건식이나 switch 문으로 대체하는 것도 고려해야 합니다.

태그: C# 조건문 중첩 if Random 가위바위보

7월 10일 02:53에 게시됨