Notice
Recent Posts
Recent Comments
Link
celina의 이것저것
[C++] 백준 10824번 - 네 수 본문
반응형
문제
네 자연수 A, B, C, D가 주어진다. 이때, A와 B를 붙인 수와 C와 D를 붙인 수의 합을 구하는 프로그램을 작성하시오.
두 수 A와 B를 합치는 것은 A의 뒤에 B를 붙이는 것을 의미한다. 즉, 20과 30을 붙이면 2030이 된다.
입력
첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000)
출력
A와 B를 붙인 수와 C와 D를 붙인 수의 합을 출력한다.
코드
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
string a, b, c, d;
cin >> a>> b>> c>> d;
long long x = stoll(a + b);
long long y = stoll(c + d);
cout << x + y;
return 0;
}
리뷰
두 수를 이어서 하나의 숫자로 만들고 더해야하는 문제라서 string문자열로 받은 후 문자열을 합치고 더해서 다시 숫자형으로 변환하면 될 것같아서 이 방법을 사용했다
c++에서 문자열은 훨씬 간단하게 쓸 수 있다
/*새롭게 알게된 c++ 문자열*/
string a
//문자열 생성
cin >> a;
//공백이전까지 문자열을 입력받음
이 두가지를 이용했다
먼저 문자열 a,b,c,d를 만들어서 숫자를 받은후 a,b와 c,d를 합쳐준다
그리고 숫자형을 변환하면됨
<에러>
int x = stoi(a + b);
int y = stoi(c + d);
숫자형으로 변환하는 과정에서 오류가 났다.
런타임에러(out_of_range)가 떴다.
각 숫자의 범위는 1,000,000까지이고 이걸 합친다면 1,000,000,000,000이고 최대로 나올 수 있는값은
2,000,000,000이다 즉 1,000,000,000,000의 수는 int로 표현할 수 있는 범위를 넘어선다!!
게다사 stoi함수는 int형으로 변환하는것이고 이 경우에는 더 큰 범위인 long long으로 표현해야한다
long long은 stoll함수를 써서 해결했다 !!
학습
stoll와 stoi함수의 차이를 첨 알았다 그리고 문자열관련해서 c++은 좀 편리한것같다 문자열 관련해서도 문제를 풀어봐야겟다
출처
10824번: 네 수
첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000)
www.acmicpc.net
'자료구조&알고리즘 > 백준' 카테고리의 다른 글
[C++] 백준 11365번 - !밀비 급일 (1) | 2023.02.10 |
---|---|
[C++] 백준 13458번 - 시험 감독 (1) | 2023.01.23 |
[C++] 백준 2965번 - 캥거루 세마리 (0) | 2023.01.23 |
[C++] 백준 15873번 - 공백 없는 A+B (0) | 2023.01.23 |
[C++] 백준 5575번 - 타임 카드 (2) | 2023.01.23 |