본문 바로가기

C 언어

백준으로 배우는 C 언어 10. 두 수 비교하기

백준의 단계별 풀어보기 1단계를 마치고 두 번째 단계입니다! 입출력과 사칙연산에서 프로그래밍에 대해 간단하게 맛을 봤으니 이제는 본격적으로 깊게 파고 들어가 봅시다! 프로그래밍을 할 때 제일 많이 사용되는 코드가 뭐냐고 물으면 if 문이라고 할 수 있는데요, 주어진 조건식들이 사실인지 아닌지를 확인하고 이어서 코드들을 실행할지 말지를 결정짓는 중요한 코드입니다. 그럼 바로 시작해 봅시다!


 

백준으로 배우는 C 언어 08. 사칙연산

지금까지 덧셈, 뺄셈, 곱셈, 나눗셈을 배웠었죠! 그렇다면 이번에는 복습 겸 사칙연산 네 가지와 더불어 나눈 후 나오는 나머지 또한 출력하는 코드를 작성해 봅시다. 나머지는 아직 한 번도 안 해봤지만 다행히..

torotoblog.tistory.com

 

백준으로 배우는 C 언어 09. 곱셈

저번 문제에서 나눗셈의 나머지를 구하는 방법에 대해서 설명했었는데요, 학교에서도 초등학교 때 말고는 나머지를 쓸 일이 거의 없었던 것처럼 나머지를 구해서 어디에 사용할지 모르겠는 분들이 있을 겁니다...

torotoblog.tistory.com


if문의 첫 번째 문제 두 수 비교하기(#1330)는 우리가 수학 시간에 배운 크다, 작다, 같다 공식을 사용해서 입력된 두 자연수를 비교하는 문제입니다. 공식 명칭은 관계 연산자라고 하는데요, 관계 연산자를 사용하면 수학에서 사용하듯이 두 수 혹은 변수들의 값을 비교한 후 기호에 맞춰서 (true) 혹은 거짓(false)을 반환합니다. 관계 연산자로는 <(크다), >(작다), ==(같다), <=(작거나 같다), >=(크거나 같다), !=(같지 않다)가 있다는 걸 알려드리면서, 바로 코딩을 시작해 보죠.

#include <stdio.h>

int main(void) {
    int a, b;
    scanf("%d %d", &a, &b);
    if(a>b)
        printf(">\n");
    else if(a<b)
        printf("<\n");
    else
        printf("==\n");
    return 0;
}

새로운 코드가 등장했습니다! 바로 if() 인데요, 괄호 안에 있는 조건식들이 참인지 거짓인지를 확인하는 역할을 합니다. 만약 조건식이 참이라면 아래 나오는 코드를 실행하고, 만약 거짓이라면 무시한 채 넘어가죠. 원래 if 문의 기본 형태는 if(조건식) {참일 때 실행할 코드} 인데요, 실행할 코드가 간단할 경우 위 코드처럼 중괄호 없이 사용할 때도 종종 있습니다. 

if(a>b)
    printf(">\n");
else if(a<b)
    printf("<\n");
else
    printf("==\n");

if 문을 조금 더 파고들면 세 종류가 있습니다. 위에서 볼 수 있듯이 if, else if, 그리고 else이죠. 이렇게 여러 개의 조건식을 비교해야 할 때에는 if, else if, else를 같이 사용합니다. 제일 먼저 if 안에 있는 조건식을 확인하고, 거짓이라면 다음으로 else if 안에 있는 조건식을 확인하게 되죠. if와 else if에 있는 조건식들이 모두 거짓이라면 마지막에 else로 넘어와서 코드를 실행하게 됩니다. 이렇게 같이 사용하게 되면 전체가 하나의 if 문이 됩니다. 그래서 이 세 가지 조건식 중에서 한 가지만 실행이 되고, 만약 참이 나왔다면 그 아래에 있는 조건식들은 모두 무시하게 되죠. 여기서 주의할 점은 if와 else는 처음과 마지막에 한 번씩만 사용할 수 있고, else if는 몇 번을 사용해도 상관이 없습니다. 

if(a>b)
    printf(">\n");
if(a<b)
    printf("<\n");
if(a==b)
    printf("==\n");

위와 같이 if 문만 사용해도 되기는 합니다. 다만 이렇게 코드를 작성하게 되면 방금 전 위에서 else if와 else를 사용했을 때와는 달리 각각 3 개의 if 문이 생성됩니다. 그렇기 때문에 전 if 문이 참이었고 코드를 실행했었어도 다음 if 문을 참인지 아닌지 검사하죠. 지금은 저 셋 중에서 무조건 하나만 참이 되게 조건식이 짜여 있지만 항상 그런 게 아니기 때문에 하나로 묶을 수 있을 때에는 우리가 한 것처럼 else if와 else를 사용해 주는 것이 좋습니다. 

그리고 세 번째 if 문에 있는 조건식을 보면 등호가 두 번 사용된 것을 볼 수 있습니다. 수학에서 등호는 두 값이 같다는 것을 나타내는 기호인데요, 프로그래밍에서 등호는 대입을 하기 위한 기호입니다. 변수를 선언할 때 int a = 10;이라 하면 a에 10이라는 값을 대입하는 것처럼요. 그래서 두 값이 같은지 비교를 하기 위해서는 등호를 두 번 사용해야 하죠. a==b는 a가 b와 같은 값을 갖고 있을 때 참을 반환하게 됩니다. 

테스트를 해 봅시다! 빌드한 후 조건식에 맞게 숫자들을 입력해 봅시다. 결과가 제대로 출력이 된다면 성공입니다!

이제 백준으로 돌아와서 언어를 C로 설정한 뒤 제출해 줍시다. 

성공!

다음 문제인 시험 성적(#9498)은 이번 문제와 거의 비슷하기 때문에 건너뛰고 그다음 문제인 윤년(#2753)으로 돌아오도록 하겠습니다. 혹시라도 모르는 부분이 있다면 언제든지 댓글 달아주세요!


 

백준으로 배우는 C 언어 11. 윤년

저번 문제에서 관계 연산자에 대해서 배웠는데요, 이번 문제에서는 또 다른 연산자인 논리 연산자에 대해서 알려드리도록 하겠습니다. 논리 연산자는 논리곱(And), 논리합(Or), 그리고 부정(Not) 이렇게 세 가지..

torotoblog.tistory.com