본문 바로가기

C 언어

백준으로 배우는 C 언어 13. 세 수

백준 단계별 풀어보기 2 단계, if 문의 마지막 문제입니다! 사실 이번 문제는 저번 문제들에서 배운 논리 연산자와 관계 연산자를 조금만 응용하면 금방 만들 수 있지만 초보자는 쉽게 놓칠 수 있는 부분이 있어서 풀이를 해 보려고 합니다! 그럼 바로 시작해보죠. 


 

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

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

torotoblog.tistory.com

 

백준으로 배우는 C 언어 12. 상근날드

저번 문제들에서 관계 연산자와 논리 연산자들에 대해서 배웠는데요, 이번 문제에서는 이 두 연산자들을 같이 활용해보도록 하죠. 백준으로 배우는 C 언어 10. 두 수 비교하기 백준의 단계별 풀어보기 1단계를 마..

torotoblog.tistory.com


세 수(#10817) 문제는 세 개의 정수가 주어졌을 때 두 번째로 큰 정수를 출력하는 프로그램을 작성해야 하는 문제인데요, 저번 문제와 비슷하게 입력된 값들을 비교하는 문제입니다. 다만 저번에는 제일 작은 수를 찾는 문제여서 쉬웠지만 두 번째로 큰 수를 찾아야 하기 때문에 조금 더 복잡하죠. 코드를 살펴봅시다.

#include <stdio.h>

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

    if ((a > b && a < c) || (a < b && a > c))
        mid = a;
    else if ((a < b && b < c) || (a > b && b > c))
        mid = b;
    else
        mid = c;
    
    printf("%d\n", mid);
    return 0;
}

형식은 얼추 비슷하죠? 스스로 해보신 분들도 아마 위 코드와 비슷하게 작성했을 것 같습니다. a, b, c 변수들의 값들을 비교하면서 논리 연산자를 사용해 각 변수들이 중간일 때를 찾으면 됩니다. 다만 놓치고 지나가면 안 되는 중요한 포인트가 하나 있는데요, 문제 어디에도 세 수가 무조건 서로 다르다는 조건이 없습니다. 그렇기 때문에 위의 코드를 그대로 사용하면 두 개 이상의 수가 같을 때 원하는 숫자가 나오지 않을 수도 있습니다. 예를 들어 2 2 1을 입력하면 두 번째로 큰 숫자인 2가 아니라 1을 출력하게 되죠. 왜냐하면 위 두 if 문에서는 a와 b가 같은 경우를 염두에 두지 않아서 무조건 마지막 else로 넘어가기 때문이죠. 

#include <stdio.h>

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

    if ((a > b && a < c) || (a <= b && a > c))
        mid = a;
    else if ((a < b && b <= c) || (a >= b && b > c))
        mid = b;
    else
        mid = c;
    
    printf("%d\n", mid);
    return 0;
}

그렇다면 서로 같은 경우도 두 번째로 큰 수를 찾을 수 있게 관계 연산자를 조금 수정해 주면 됩니다. 위 코드처럼 작성하면 이제 두 개 이상의 수가 같더라도 문제없이 두 번째로 큰 수를 찾을 겁니다. 

테스트를 해 봅시다! 빌드한 뒤 다양한 조합의 숫자들을 입력해 보면 항상 중간 수가 나오는 것을 볼 수 있습니다. 다행이네요.

이제 제출을 해 볼까요? 백준에 들어간 뒤 언어를 C로 선택해서 제출하시면 됩니다.

성공!

이걸로 2단계 if 문도 끝이 났네요. 조금씩 프로그래밍 실력이 늘고 있는 게 느껴지시나요? 늘고 있기를 바라면서 다음 강좌는 3단계 for 문으로 돌아오도록 하겠습니다.


 

백준으로 배우는 C 언어 14. 구구단

백준 단계별 풀어보기의 3 번째 단계입니다! 이번 단계에서는 for 문을 배울 건데요, if 문과 마찬가지로 프로그래밍을 할 때 가장 많이 사용되는 함수 중 하나입니다. for 문은 반복문이라고도 하는데요, 특정..

torotoblog.tistory.com