Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스쿼드 메이커
- 안녕 디지몬
- 강아지 #박스집 #복층
- 안드로이드 #앱개발#계산기
- 독서감상문
- 자바 인강
- 홈CCTV
- 박스#강아지집#만들기
- 안드로이드 그림판#그림메모장#낙서장
- 패스트캠퍼스
- Java & SpringBoot로 시작하는 웹 프로그래밍
- 바이트디그리
- 랜덤스쿼드
- 랜덤
- Ai
- 부의감각
- 내일배움카드
- 혼술 술자리 인싸앱
- 아두이노#작품#사료급식기
- 강아지 스마트 펜스
- 안드로이드#앱만들기#알바
- D-ID
- #FIFAONLINE4
- 부르지마세요
- 안드로이드
- 피온4
- fifaonline4
- fifaonline
- 불끌때
- K디지털크레딧
Archives
- Today
- Total
LC Studio
백준 10757 큰 수 A+B (JAVA) 본문
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)
출력
첫째 줄에 A+B를 출력한다.
정수의 최대 범위인 long의 범위(-2^63 ~ 2^63-1)를 넘어서는 범위이다.
어떻게 계산할까 고민하다 배열을 만들어서 해결해야겠다 생각했다.
하지만 덧셈을 역순으로 어떻게 해야할지 고민하다 결국 다른 블로그의 도움을 받았다.
https://st-lab.tistory.com/199
[백준] 10757번 : 큰 수 A+B - JAVA [자바]
www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 Java로 풀 경우 매우 쉽게 풀 수 있는 문제다. 알고리즘 [접근..
st-lab.tistory.com
애초에 배열을 역순으로 저장하면 되는 것이었다. 허허....
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
//StringTokenizer를 이용하여 A, B를 입력받는다.
String A = (st.nextToken());
String B = (st.nextToken());
//max_length에 A,B 중 더 긴 값을 저장한다.
int max_length = Math.max(A.length(), B.length());
//최고자리수의 합이 10을 넘을 수 있기 때문에 +1로 여유공간을 만들어 배열을 선언해준다.
int[] Aarr = new int[max_length+1];
int[] Barr = new int[max_length+1];
//Aarr 배열을 생성하여, A를 역순으로 저장한다
for(int i = A.length()-1,idx=0; i>=0; i--,idx++){
Aarr[idx] = A.charAt(i)-'0';
}
//Barr 배열을 생성하여, B를 역순으로 저장한다
for(int i = B.length()-1,idx=0; i>=0; i--,idx++){
Barr[idx] = B.charAt(i) - '0';
}
//Aarr배열을 중심으로 계산을 진행
//Aarr과 Barr을 더하고
//%10을 활용해
//더한값이 10을 넘는 경우와 넘지 않는 경우를 한번에 처리해준다.
//그리고 value/10을 해주어
//더한값이 10을 넘는다면 다음 배열(i+1)에 저장해준다.
for(int i = 0; i < max_length; i++) {
int value = Aarr[i] + Barr[i];
Aarr[i] = value%10;
Aarr[i+1] += (value/10);
}
//StringBuilder의 append를 통해 문자열을 저장해서 출력해준다.
StringBuilder sb = new StringBuilder();
//만약 최댓값이 0이 아니라면,
//즉, 최고자리수의 합이 10을 넘는다면 출력해준다.
if(Aarr[max_length] != 0){
sb.append(Aarr[max_length]);
}
//나머지를 차례대로 출력해준다.
for(int i = max_length -1; i>=0; i--){
sb.append(Aarr[i]);
}
System.out.println(sb);
}
}
반응형
'Java > 백준 알고리즘' 카테고리의 다른 글
백준 4948 베르트랑 공준 (JAVA) (0) | 2022.03.23 |
---|---|
백준 1929 소수 구하기 (JAVA) (0) | 2022.03.22 |
백준 2775 부녀회장이 될테야 (JAVA) (0) | 2022.03.20 |
백준 10250 ACM 호텔 (JAVA) (0) | 2022.03.20 |
백준 2869 달팽이는 올라가고 싶다 (JAVA) (0) | 2022.03.19 |