일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- BFS
- LIS
- 새벽코딩
- 그리디
- SQL
- 탐색
- Java
- Python
- 알고리즘
- 백트래킹
- 스택
- 다이나믹프로그래밍
- HashMap
- Stack
- 브루트포스
- Queue
- BufferedReader
- 아스키코드
- 프로그래머스
- 빅데이터
- 백준
- 시뮬레이션
- 구현
- 다리 만들기
- 배열
- 완전탐색
- DP
- dfs
- oracle
- 문자열
Archives
- Today
- Total
새벽코딩
[백준] [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를 붙인 수의 합을 출력한다.
package algorithm;
import java.util.*;
import java.io.*;
public class 네수_10824 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] in = br.readLine().split(" ");
String A = in[0];
String B = in[1];
String C = in[2];
String D = in[3];
System.out.println(Long.parseLong(A+B)+Long.parseLong(C+D));
}
}
이 문제는 A, B, C, D를 각각 String으로 받아서 문자열(A, B) / (C, D)로 붙인 후 더해주면 되는 문제이다.
처음엔 Long.parsLong()을 사용하지 않고 Integer.parseInt()를 사용했더니 런타임에러가 났는데.. 생각해보니 숫자의 최대 범위가 1,000,000이었다.
A = 1,000,000, B = 1,000,000 일때 두 문자열을 더해 정수형으로 변환하면
10000001000000 이라는 숫자가 된다.
int형 정수의 범위는 -2의 31제곱 ~ (2의 31제곱 - 1)이며 이를 수로 환산하면 –2,147,483,648 ~ 2,147,483,647 이므로 해당 범위를 초과하게 되어 에러가 났었다.
int형이 아닌 Long형으로 변환하여 계산해서 성공하였다.
참고로, Long형의 범위는 -2의 63제곱 ~ (2의 63제곱 -1)이며 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
약 900경이상의 범위를 가진다.
-새벽코딩-
반응형
'알고리즘' 카테고리의 다른 글
[백준] [1032] 명령 프롬프트 (0) | 2022.11.20 |
---|---|
[백준] [1212] 8진수 2진수 (0) | 2022.11.18 |
[백준] [1764] 듣보잡 (0) | 2022.11.16 |
[백준] [4949] 균형잡힌 세상 (0) | 2022.11.15 |
[백준] [1259] 팰린드롬수 (0) | 2022.11.14 |
Comments