BOJ

백준 2420번 사파리 월드 [C언어]

Sloth Coder 2022. 8. 28. 20:59

문제 출처: https://www.acmicpc.net/problem/2420

 

2420번: 사파리월드

첫째 줄에 두 도메인의 유명도 N과 M이 주어진다. (-2,000,000,000 ≤ N, M ≤ 2,000,000,000)

www.acmicpc.net

 

 

Sol)

#include <stdio.h>

int main(){
    long long s1, s2;
    long long diff;  

    scanf("%lld %lld", &s1, &s2);

    diff = s1 >= s2 ? s1 - s2 : s2 - s1;

    printf("%lld\n", diff);

    return 0;
}

 

  • 풀이 방향

두 수의 차의 절댓값을 구하는 간단한 문제이다. 입력값의 제한범위는 int 범위 내이지만, 계산 결과가 int범위가 넘어갈 수 있으므로 두 수를 long long 형으로 선언해 주어야겠다. int끼리의 연산 결과는 int형이므로 overflow가 발생할 수 있기 때문이다.

 

  • 풀이

두 수의 절댓값을 구하는 방법은 삼항연산자를 선택했다. 만일 함수를 사용하고 싶다면 llabs()함수를 사용해도 되겠다.

 

  • 문제에 대한 사견

이 문제는 자료형에 주의하지 않으면 실수를 할 가능성이 높은 문제이다. int끼리의 계산 결과는 int라는 것은 항상 주의하자! 또한, 이 문제로 이런 저런 시험을 하다가 발견한 주의점이 있다. 놓치기 쉬운 부분이므로 함께 확인해 보면 좋겠다. 해당 포스트의 링크는 아래에 달아두겠다.

 

 

https://csloth.tistory.com/25?category=1115835 

 

정수 자료형의 저장 방식과 scanf함수 사용시 주의할 점

오늘 백준 문제를 풀고 해당 코드를 이리저리 만져보다 발견한 주의점이다. 해당 문제: https://csloth.tistory.com/24 백준 2420번 사파리 월드 [C언어] 문제 출처: https://www.acmicpc.net/problem/2420 2420번..

csloth.tistory.com