728x90
728x170
문제
네 자연수 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를 붙인 수의 합을 출력한다.
예제 입력
10 20 30 40 |
예제 출력
4060 |
힌트
출처
· 문제를 만든 사람: baekjoon
· 문제의 오타를 찾은 사람: wurikiji
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <iostream> #include <cstring> // strlen() #include <string> // stoll() (C++11) #define N 14 // A(C), B(D) 가 모두 1,000,000일 경우 -> 7자리 * 2 = 14자리 using namespace std; int main() { char A[N] = " ", B[N] = " ", C[N] = " ", D[N] = " "; char ary1[N * 4], ary2[N * 4]; int lena, lenc; long long res1, res2; cin >> A >> B >> C >> D; lena = strlen(A); lenc = strlen(C); for (int i = 0; i < N; i++) { if (A[i] != ' ') { ary1[i] = A[i]; } if (C[i] != ' ') { ary2[i] = C[i]; } } for (int i = 0; i < N; i++) { if (B[i] != ' ') { ary1[i + lena] = B[i]; } if (D[i] != ' ') { ary2[i + lenc] = D[i]; } } res1 = stoll(ary1); res2 = stoll(ary2); cout << res1 + res2 << endl; return 0; } | cs |
- stoll() 함수를 사용하여 쉽게 풀었던 문제. (stoll() 함수는 C++11에서 제공되는 함수)
- 처음에는 stoi() 함수를 무심코 사용하였지만, 출력 오류가 발생하였다.
- A,B,C,D의 값이 모두 1,000,000으로 입력 받았을 경우, int형의 범위를 초과하기 때문에 long long 자료형을 사용해서 변수를 선언해야 했고, String을 long long 형식의 자료형으로 바꿔주는 stoll() 함수를 써야 헀다.
- 아래는 최대값을 입력값으로 넣어줬을 때의 출력 결과이다.
입력 : 1000000 1000000 1000000 1000000
출력 : 20000002000000 (int 자료형 범위 초과)
728x90
그리드형(광고전용)
'Problem Solving > BaekJoon Online Judge' 카테고리의 다른 글
[BOJ10101][C++] 삼각형 외우기 (0) | 2017.11.10 |
---|---|
[BOJ4153][C++] 직각삼각형 (0) | 2017.11.10 |
[BOJ5565][C++] 영수증 (0) | 2017.11.09 |
[BOJ12790][C++] Mini Fantasy War (0) | 2017.11.09 |
[BOJ2446][C++] 별찍기 - 9 (0) | 2017.11.09 |
[BOJ2445][C++] 별찍기 - 8 (0) | 2017.11.09 |
[BOJ2444][C++] 별찍기 - 7 (0) | 2017.11.09 |
[BOJ2443][C++] 별찍기 - 6 (0) | 2017.11.09 |