11382번: 꼬마 정민
첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다.
www.acmicpc.net
문제
해석
세 정수를 변수로 받고 세수의 합을 출력합니다.
풀이
문제를 보자마자 세 수를 더하고 이를 출력하는 간단한 코드라고 생각했습니다.
#include<iostream>
using namespace std;
int main(){
int a,b,c;
cin >> a >> b >> c;
cout << a+b+c << endl;
}
위의 코드를 작성하고 빠르게 넘어가려 했는데 결과가 틀렸다고 나옵니다.
다시 문제의 조건을 보니 A, B, C가 1012까지 온다고 합니다. 문제의 내용만 보고 조건을 무시해 int 자료형의 최댓값이 2147483647인 점을 놓친 겁니다.
따라서 1012를 수용할 수 있는 long 자료형으로 바꿔 줘야 합니다. 이 문제를 풀 당시에는 long의 자료형 크기를 알지 못했기에 long long으로 해결했습니다.
#include<iostream>
using namespace std;
int main(){
long long a,b,c;
cin >> a >> b >> c;
cout << a+b+c << endl;
}
문제조건에 정확히 맞추어 메모리 공간의 낭비를 없애려면 long 자료형이 가장 최적합니다.
#include<iostream>
using namespace std;
int main(){
long a,b,c;
cin >> a >> b >> c;
cout << a+b+c;
}
정리
문제 내용만 보고 단순히 더하는 사칙연산 문제인 줄 알고 대충 코드를 짰더니 틀린 문제입니다.
문제 조건을 확인하는 경각심을 심어주고, 자료형의 크기 범위를 학습할 수 있었습니다.
'프로그래밍 > 코딩 테스트 연습' 카테고리의 다른 글
[백준] 10172번 : 개 (1단계) (C++) (0) | 2024.01.06 |
---|---|
[백준] 10171번 : 고양이 (1단계) (C++) (1) | 2024.01.06 |
[백준] 2588번 : 곱셈 (1단계) (C++) (0) | 2024.01.05 |
[백준] 10430번 : 나머지 (1단계) (C++) (1) | 2024.01.05 |
[백준] 18108번 : 1998년생인 내가 태국에서는 2541년생?! (1단계) (C++) (1) | 2024.01.05 |