상세 컨텐츠

본문 제목

[CodeUp] C언어 기초 100제 풀이 (1066번 ~ 1070번)

C언어

by idea8590 2026. 2. 3. 22:21

본문

반응형

CodeUp 기초 100제 중 1066번부터 1070번까지는 프로그램의 흐름을 제어하는 핵심 문법인 조건문(Selection Structure)을 다룹니다. if문을 사용하여 단순한 참/거짓을 판별하는 것부터, else if를 이용한 다중 분기, 그리고 switch문을 활용한 깔끔한 선택 구조까지 단계별로 연습하게 됩니다. 이 구간의 문제들은 알고리즘의 기초가 되는 논리력을 키우는 데 매우 중요하므로, 각 문법의 차이점과 사용 시기를 정확히 이해하는 것이 좋습니다.


1066 : [기초-조건/선택실행구조] 정수 3개 입력받아 짝/홀 출력하기

세 개의 정수 a, b, c를 입력받아 각 정수가 짝수(even)인지 홀수(odd)인지를 줄을 바꿔 출력해보자.

소스 코드

C
 
#include <stdio.h>

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);

    if(a % 2 == 0) printf("even\n");
    else printf("odd\n");

    if(b % 2 == 0) printf("even\n");
    else printf("odd\n");

    if(c % 2 == 0) printf("even\n");
    else printf("odd\n");

    return 0;
}

예시 입력 / 출력

[입력]
1 2 8

[출력]
odd
even
even

문제 해설 세 개의 숫자는 서로 독립적인 값이므로, 하나의 if-else 문으로 묶지 않고 세 번의 if문을 각각 작성하여 개별적으로 판단해야 합니다. 나머지 연산자(%)를 사용하여 2로 나눈 나머지가 0이면 짝수, 아니면 홀수로 판별합니다. 각 결과를 출력한 후에는 줄 바꿈(\n)을 해주어야 출력 형식이 올바르게 유지됩니다.


1067 : [기초-조건/선택실행구조] 정수 1개 입력받아 분석하기

정수 1개를 입력받아 음(minus)/양(plus)과 짝(even)/홀(odd)을 분류하여 출력해보자.

소스 코드

C
 
#include <stdio.h>

int main() {
    int a;
    scanf("%d", &a);

    // 1. 음수/양수 판별
    if(a < 0) printf("minus\n");
    else printf("plus\n");

    // 2. 짝수/홀수 판별
    if(a % 2 == 0) printf("even\n");
    else printf("odd\n");

    return 0;
}

예시 입력 / 출력

[입력]
-2147483648

[출력]
minus
even

문제 해설 하나의 입력값에 대해 두 가지 속성(부호, 홀짝)을 모두 확인해야 하므로 조건문을 병렬로 두 번 배치합니다. 첫 번째 if문에서는 0보다 작은지(a < 0)를 확인하여 부호를 출력하고, 두 번째 if문에서는 2로 나눈 나머지(a % 2)를 확인하여 홀짝을 출력합니다. 조건을 중첩해서 쓰기보다는 이렇게 분리하는 것이 코드의 가독성을 높이고 로직을 명확하게 합니다.


1068 : [기초-조건/선택실행구조] 정수 1개 입력받아 평가 출력하기

점수(정수, 0 ~ 100)를 입력받아 평가 기준에 따라 등급(A, B, C, D)을 출력해보자. (90~100: A, 70~89: B, 40~69: C, 0~39: D)

소스 코드

C
 
#include <stdio.h>

int main() {
    int score;
    scanf("%d", &score);

    if(score >= 90) printf("A");
    else if(score >= 70) printf("B");
    else if(score >= 40) printf("C");
    else printf("D");

    return 0;
}

예시 입력 / 출력

[입력]
73

[출력]
B

문제 해설 여러 구간을 나누어 판단할 때는 if ~ else if ~ else 구조를 사용하며, 조건의 순서가 매우 중요합니다. 가장 큰 범위인 90점 이상부터 검사해야, 90점 미만인 값들만 다음 조건(70점 이상)으로 넘어가게 되어 논리 오류가 발생하지 않습니다. 마지막 else는 위의 모든 조건에 해당하지 않는 경우(40점 미만)를 처리하므로 별도의 조건식이 필요 없습니다.


1069 : [기초-조건/선택실행구조] 평가 입력받아 다르게 출력하기

영문자(A, B, C, D)를 하나 입력받아 평가 내용(best!!!, good!!, run!, slowly~)을 출력하고, 그 외의 문자는 what?을 출력해보자.

소스 코드

C
 
#include <stdio.h>

int main() {
    char grade;
    scanf("%c", &grade);

    switch(grade) {
        case 'A': printf("best!!!"); break;
        case 'B': printf("good!!"); break;
        case 'C': printf("run!"); break;
        case 'D': printf("slowly~"); break;
        default: printf("what?");
    }

    return 0;
}

예시 입력 / 출력

[입력]
A

[출력]
best!!!

문제 해설 입력값이 문자나 정수처럼 딱 떨어지는 값일 때는 if문보다 switch-case문을 사용하는 것이 훨씬 구조적이고 보기 좋습니다. 각 case 끝에는 break;를 넣어주어야 해당 코드 실행 후 switch 블록을 빠져나오게 됩니다. (없으면 아래 코드가 계속 실행됨) default:는 제시된 case 외의 모든 입력에 대해 실행되므로 예외 처리에 유용합니다.


1070 : [기초-조건/선택실행구조] 월 입력받아 계절 출력하기

월이 입력될 때 계절 이름이 출력되도록 해보자. (12, 1, 2: winter / 3, 4, 5: spring / 6, 7, 8: summer / 9, 10, 11: fall)

소스 코드

C
 
#include <stdio.h>

int main() {
    int month;
    scanf("%d", &month);

    switch(month) {
        case 12:
        case 1:
        case 2:
            printf("winter");
            break;
        case 3:
        case 4:
        case 5:
            printf("spring");
            break;
        case 6:
        case 7:
        case 8:
            printf("summer");
            break;
        case 9:
        case 10:
        case 11:
            printf("fall");
            break;
    }

    return 0;
}

예시 입력 / 출력

[입력]
12

[출력]
winter

문제 해설 switch문의 'Fall-through(흘러내림)' 기능을 활용하면 여러 입력값에 대해 동일한 결과를 간결하게 처리할 수 있습니다. case 12와 case 1에 실행 문장과 break가 없으므로, 해당 값이 입력되면 case 2까지 내려가서 "winter"를 출력하게 됩니다. 반복되는 코드를 줄일 수 있어 효율적이며, 계절 문제처럼 여러 값이 하나의 결과로 묶일 때 가장 적합한 방식입니다.


핵심 요약

  1. 나머지 연산자(%): 짝수/홀수 판별(n % 2 == 0)이나 배수 확인 등 조건문 문제에서 빈번하게 사용됩니다.
  2. if문의 순서: 범위를 나눌 때(>=)는 큰 값부터 순차적으로 else if를 작성해야 논리적 오류를 방지할 수 있습니다.
  3. switch문의 활용: 입력값이 명확한 정수나 문자일 때 if문보다 가독성이 좋으며, break 유무에 주의해야 합니다.
  4. 조건의 병렬 vs 중첩: 서로 독립적인 조건(부호, 짝홀)은 병렬로, 연관된 조건(점수 등급)은 중첩(else if)으로 처리합니다.
  5. Fall-through: switch문에서 break를 생략하여 여러 조건을 하나의 실행 코드로 묶는 테크닉을 익혀두면 유용합니다.
반응형

관련글 더보기