문제:

시도 횟수: 2번
처음 생각한 방법: 사실 문제를 제대로 읽지도 않았던 것 같다. 11일 전에 푼 문젠데 전혀 기억이 안난다. 그냥 입력과 출력만 보고 두 수의 차이 절댓값 구하기를 바로 한 것 같은데... abs라는 함수가 있었는지 기억이 안나서 구글링 한번 해보고 제출했었다.
처음에 틀린건 N, M의 범위를 대충 보고 int로 설정해둔것 때문. int의 범위가 -2,100,000,000~2,100,000,000으로 기억하고 있어서 당연히 맞을 줄 알았는데, int끼리의 계산 결과는 int로 나온다는 것을 깜빡했었다. |2,000,000,000 - (-2,000,000,000)| 이 int의 범위를 벗어나므로 long long으로 변수를 설정해야했다.
내 코드:
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long N,M;
cin >> N >> M;
cout << abs(N-M) << "\n";
return 0;
}
모범답안:
#include<stdio.h>
int main(){
long a,b;
scanf("%ld %ld",&a,&b);
printf("%ld",(a>b)?a-b:b-a);
}
abs함수는 std에 있어서 사실상 성능에 위해되는 요소는 아니나, 함수를 쓰지 않고 삼항연산자로 구현할 수 있다는 사실을 알아두면 좋을 것 같다.
내 코드의 개선할 점: cin, cout은 입출력시간을 잡아먹으므로 printf, scanf를 쓰는 게 좋을듯 하다.
알고리즘 분류: 수학, 구현, 사칙연산
난이도: 브론즈 V
복습하면서 참고해본 블로그 목록:
https://blockdmask.tistory.com/335
[C언어/C++] 절대값 함수 abs, fabs에 대해서.
안녕하세요. BlockDMask 입니다. 오늘은 절대값을 구할 수 있는 절대값 함수 abs에 대해서 알아보려고 합니다. 1. C 언어에서의 abs, fabs 함수 (헤더파일과 함수 원형) 2. C++에서의 std::abs 함수 (헤더파일
blockdmask.tistory.com
'백준' 카테고리의 다른 글
[백준] 10872번 - 팩토리얼 (0) | 2024.03.18 |
---|---|
[백준] 2741번 - N 찍기 (0) | 2024.03.18 |
[백준] 25083번 - 새싹 (0) | 2024.03.18 |
[백준] 7287번 - 등록 (0) | 2024.03.18 |
[백준] 10699번 - 오늘 날짜 (0) | 2024.03.18 |