본문 바로가기
백준

백준 단계 1. 입출력과 사칙연산 추가된 문제들 풀이

by 템닉___ 2024. 3. 17.

이 포스팅은 템닉의 개발저장소의 레거시 글입니다.

 

템닉의 개발저장소

기억 못할 수도 있는 지식들을 덤프해버리는 공간입니다.

tempnixk.tistory.com

 

몇년 사이에 백준 문제들이 업데이트되면서 추가된 문제들이 있어서 추가합니다.

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