https://www.acmicpc.net/problem/10824
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
|
public class Main {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arrNumbers = br.readLine().toString().split(" ");
String strFirstNumber = arrNumbers[0] + arrNumbers[1];
String strSecondNumber = arrNumbers[2] + arrNumbers[3];
Long result = Long.parseLong(strFirstNumber) + Long.parseLong(strSecondNumber);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
c++소스
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <iostream>
#include <string>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int A, B, C, D;
cin >> A >> B >> C >> D;
string s1 = to_string(A).append(to_string(B));
string s2 = to_string(C).append(to_string(D));
// (1 ≤ A, B, C, D ≤ 1,000,000) 이므로,
// 두 수를 이어붙이면 int 범위를 넘는다 -> long long 변환
cout << stoll(s1) + stoll(s2);
return 0;
}
Colored by Color Scripter
|
Tip
1. 입력조건 (1 ≤ A, B, C, D ≤ 1,000,000) 을 간과했다가 여러번 틀렸다
최대 20,000,002,000,000 의 결과가 나올수 있으므로 int로는 자료형의 크기가 부족하니
Long 자료형을 택해서 값을 받아와야 했다
표현 가능 범위 | |
int | -2,147,483,648 ~ 2,147,483,647 |
long | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
2. Long.parseLong() VS Long.valueOf()
Long.parseLong 은 primitive type을 반환하고, Long.valueOf은 Long 래퍼(wrapper) 객체를 반환한다.
둘 중 어느것을 써도 상관없지만, valueOf() 내부적으로 parseXXX() 함수를 사용한다고 한다.
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ]1978번: 소수 찾기(java, c++) (0) | 2019.09.17 |
---|---|
[BOJ]1934번: 최소공배수(java, c++) (0) | 2019.09.17 |
[BOJ]2609번: 최대공약수와 최소공배수(java, c++) (0) | 2019.09.17 |
[BOJ]10430번: 나머지 (0) | 2019.09.16 |
[BOJ]11656번: 접미사배열(java) (0) | 2019.09.11 |
댓글