본문으로 바로가기

[백준 2935] 소음

category 알고리즘/백준 알고리즘 2018. 5. 20. 15:07

글에 개요


백준 알고리즘 2935번 "소음" 문제입니다.
백준 알고리즘 분류에서 '구현'에 있는 문제입니다.
이 문제는 BigInteger를 활용하면 쉬운 문제입니다.

문제 내 입력값이 A, B 모두 10의 제곱의 형태로, 길이가 최대 100자리이기 때문에 단순히 곱셈과 덧셈을 해주면 런타임 에러가 날 것입니다.
그래서 첫 번째 방법으로는 입력받은 수의 길이를 파악하여 처리하는 방법이 있습니다.
하지만 저는 두 번째 방법인 BigInteger를 활용할 것입니다. 왜냐하면 무한대의 수도 처리 가능하며 코드가 간결하기 때문입니다!!!

[백준 2935] 소음https://www.acmicpc.net/problem/2935

참고할 글
  1. http://brenden.tistory.com/40 ([백준 2577] 숫자의 개수 - 구현 문제)

  2. http://brenden.tistory.com/41 ([백준 2839] 설탕 배달 - 구현 문제)

  3. http://brenden.tistory.com/42 ([백준 10798] 세로읽기 - 구현 문제)

  4. http://brenden.tistory.com/44 ([백준 1764] 듣보잡 - 구현 문제)

  5. http://brenden.tistory.com/46 ([백준 2563] 색종이 - 구현 문제)

  6. http://brenden.tistory.com/54 ([백준 10984] 내 학점을 구해줘 - 구현 문제, 정렬 문제)

  7. http://brenden.tistory.com/55 ([백준 8979] 올림픽 - 구현 문제,  정렬 문제)


핵심 내용
  1. BigInteger (거대 무한 정수)에 대한 이해
  • 자바의 64비트 정수형인 long형으로 처리되지 않는 숫자는 BigInteger를 활용합니다.
  • BigInteger에서 제공하는 add(), subtract(), multiply(), divide()를 활용해서 사칙연산을 진행해야 합니다.
  • 생성자를 선언할 시 꼭 매개변수가 필요합니다. 대표적으로는, BigInteger bigInt = new BigInteger(String val); 와 같이 선언할 수 있습니다.
  • import java.math.BigInteger; 와 같이 math 패키지 내부에 선언되어 있습니다.


해결 방법
  1. A, B의 숫자를 BigInteger에 담아줍니다.
  2. BigInteger내의 사칙연산 함수를 통해 계산해줍니다.

해결한 코드



백준 참고 내용

시간 제한메모리 제한제출정답맞은 사람정답 비율
1 초128 MB24091081100449.264%

문제

수업 시간에 떠드는 두 학생이 있다. 두 학생은 수업에 집중하는 대신에 글로벌 경제 위기에 대해서 토론하고 있었다. 토론이 점점 과열되면서 두 학생은 목소리를 높였고, 결국 선생님은 크게 분노하였다.

이렇게 학생들이 수업 시간에 떠드는 문제는 어떻게 해결해야 할까?

얼마전에 초등학교 선생님으로 취직한 상근이는 이 문제를 수학 문제로 해결한다. 학생들을 진정시키기 위해 칠판에 수학 문제를 써주고, 아이들에게 조용히 이 문제를 풀게 한다. 학생들이 문제를 금방 풀고 다시 떠드는 것을 방지하기 위해서, 숫자를 매우 크게 한다.

아직 초등학교이기 때문에, 학생들은 덧셈과 곱셈만 배웠다. 또, 아직 10의 제곱꼴을 제외한 다른 수는 학교에서 배우지 않았기 때문에, 선생님이 써주는 수는 모두 10의 제곱 형태이다.

쉬는 시간까지 문제를 푸는 것을 막기 위해서, 선생님이 써주는 숫자는 최대 100자리이다.

칠판에 써있는 문제가 주어졌을 때, 결과를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 양의 정수 A가 주어진다.

둘째 줄에 연산자 + 또는 *가 주어진다.

셋째 줄에 양의 정수 B가 주어진다.

A와 B는 모두 10의 제곱 형태이고, 길이는 최대 100자리이다.

출력

첫째 줄에 결과를 출력한다. 결과는 A+B 또는 A*B이며, 입력에서 주어지는 연산자에 의해 결정된다. 

예제 입력 1 

1000
*
100

예제 출력 1 

100000



'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

[백준 8979] 올림픽  (0) 2018.05.18
[백준 10984] 내 학점을 구해줘  (0) 2018.05.17
[백준 4673] 셀프 넘버  (0) 2018.05.10
[백준 6588] 골드바흐의 추측  (0) 2018.05.10
[백준 4948] 베르트랑 공준  (0) 2018.05.10

댓글을 달아 주세요