이 포스팅은 템닉의 개발저장소의 레거시 글입니다.
몇년 사이에 백준 문제들이 업데이트되면서 추가된 문제들이 있어서 추가합니다.
1. ??! (문제번호 10926)
#include <iostream>
#include <string>
using namespace std;
int main() {
string id = "";
cin >> id;
cout << id +"??!" << endl;
}
2. 1998년생인 내가 태국에서는 2541년생?! (문제번호 18108)
#include <iostream>
using namespace std;
int main() {
int ageThai;
int ageKorean;
cin >> ageThai;
ageKorean = ageThai - 543;
cout << ageKorean << endl;
}
3. 꼬마 정민 (문제번호 11382)
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
cout << a+b+c << endl;
}
처음에 이런식으로 풀었다가 틀렸다는 메시지를 받았다. 왜 틀렸는지 이유 분석을 해야할 것 같다.
문제: 꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다!
입력: 첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 10^12)이 공백을 사이에 두고 주어진다.
출력: A+B+C의 값을 출력한다.
왜 틀렸을까? 혹시 몰라서 int의 범위를 찾아보았다. 2^32까지 표현 가능한 자료형인데, 10^12보다 작은 범위로 계산되었다.
2,147,483,647 vs 1,000,000,000,000
unsigned 도 커버할 수 없는 범위이니 long long 형으로 하면 해결될 것 같다.
#include <iostream>
using namespace std;
int main() {
long long a, b, c;
cin >> a >> b >> c;
cout << a+b+c << endl;
}
자료형을 바꾸니 해결되었다. 처음 봤을때는 int 값이 범위 안에 들어갈 거라고 대충 계산해서 생각했는데 정확히 생각해봐야했던 문제였다.
'백준' 카테고리의 다른 글
백준 단계 5. 문자열 (0) | 2024.03.17 |
---|---|
백준 단계 4. 배열 (0) | 2024.03.17 |
백준 단계 3. 반복문 (0) | 2024.03.17 |
백준 단계 2. 조건문 (0) | 2024.03.17 |
백준 단계 1. 입출력과 사칙연산 (0) | 2024.03.17 |