Jinny Kong’s blog
18th Koala 2주차 본문
Koala 2주차 시작!!! ♪٩(٩ •'ᵕ'• ) "✧♪( •'ᵕ'•و(و "✧
이번 포스팅에서는 숫자를 문자열처럼 이어붙인 후 다시 정수로 바꾸어 계산하는 문제를 C++로 해결하면서 등장하는 핵심 개념과 함수를 정리하려 한다!
백준 10824번 : 네 수
네 자연수 A, B, C, D가 주어졌을 때 A와 B를 붙여서 만든 수와 C와 D를 붙여서 만든 수의 합을 구하는 프로그램이다.
예를 들어 A = 10, B = 20, C = 30, D = 40 이면, A와 B를 붙이면 1020, C와 D를 붙이면 3040, 그 합은 4060이 되는 식이다.
처음 이 문제를 봤을 때는 정말 쉬운 문제라고 생각하고 호다닥 코드를 작성했다.
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
cout << 100*a + b + 100*c + d;
return 0;
}
10과 20을 이어붙이면 1020일테니 정말 단순하게 첫번째에 주어진 숫자에 100만큼을 곱하여 더하면 된다고 생각했다.
그래서 당당하게 코드를 작성하고 빠르게 제출을 눌렀다!!
결과는 당연히...!! ㅠㅠㅋㅋㅋㅋㅋㅋㅋ

to_string() 함수를 사용해 숫자를 문자열로 변환한 후 이어 붙여야 하는 문제였는데 문자열 부분은 너무 오랫동안 공부를 안하다 보니 그생각을 따로 하지 못했던 것 같다.
100*a + b 방식은 a, b의 자릿수에 따라 잘못된 값이 나올 수 있다는 점을 몰랐다...! 따라서 자릿수에 따른 반례가 생길 수 있기에, 이 문제는 더더욱 to_string()으로 문자열 연결이 필요했다!!
#include <iostream>
#include <string>
using namespace std;
int main() {
int A, B, C, D;
cin >> A >> B >> C >> D;
// 숫자를 문자열로 변환하여 이어붙이기
string AB = to_string(A) + to_string(B);
string CD = to_string(C) + to_string(D);
// 문자열을 정수로 다시 변환하여 더하기
long long result = stoll(AB) + stoll(CD);
cout << result << endl;
return 0;
}
따라서 최종 코드는 이러하다!
몰랐던 함수도 있으니 조금 더 세세하게 뜯어보았다!!
1. 정수를 문자열로 변환 및 문자열 결합
string AB = to_string(A) + to_string(B);
string CD = to_string(C) + to_string(D);
to_string(int n)은 숫자 n을 문자열로 변환해주는 함수이다. 여기서는 A, B, C, D를 각각 문자열로 바꾸고, + 연산자를 이용해 이어 붙였다. 문자열끼리는 + 연산자를 통해 간단하게 이어 붙일 수 있다.
2. 문자열을 정수 long long으로 변환
long long result = stoll(AB) + stoll(CD);
stoll(string s)는 문자열 s를 long long형 정수로 바꿔준다.
또한 여기서 long long을 쓴 이유는!!
최대 입력값이 1,000,000일 때, A = 1000000, B = 1000000이면 붙인 수는 10000001000000이다. 따라서 이 수는 int로 표현할 수 있는 범위를 넘어가므로, 64비트 정수형인 long long을 사용해야 안전하다.
1, 2주차에는 이런 식으로 생각의 흐름대로 가볍게 문제를 풀었다가 틀리는 경우가 종종 있었다... ㅠㅠ
3주차부터는 문제를 풀기 전에 생길 수 있는 반례를 조금 더 생각하고 풀 수 있도록 노력해봐야겠다~~~!!!
Koala 2주차 끗~~(^⦁⩊⦁⸝⸝^)
'KOALA' 카테고리의 다른 글
| 18th Koala 7주차 (1) | 2025.05.18 |
|---|---|
| 18th Koala 5주차 (1) | 2025.05.04 |
| 18th Koala 4주차 (2) | 2025.04.13 |
| 18th Koala 3주차 (4) | 2025.04.06 |
| 18th Koala 1주차 (0) | 2025.03.23 |