코딩테스트/programming_JAVA

[Java] baekjoon_1271 : 엄청난 부자2

prometedor 2024. 3. 1. 23:27

수학, 사칙연산, 임의 정밀도 / 큰 수 연산

엄청난 부자2 : Bronze5

https://www.acmicpc.net/problem/1271

 

1271번: 엄청난 부자2

첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 101000, m과 n은 10진수 정수)

www.acmicpc.net

 

이 문제는 브론즈5라서 쉽게 생각했는데, 런타임에러(NumberFormat)를 많이 냈다,,,ㅎㅎ

 

풀이

import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class Main {
  private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

  public static void main(String[] args) throws IOException {
    StringTokenizer st = new StringTokenizer(br.readLine());
    BigInteger n = new BigInteger(st.nextToken());
    BigInteger m = new BigInteger(st.nextToken());

    bw.write(n.divide(m) + "\n");
    bw.write(n.remainder(m) + "\n");
    br.close();
    bw.close();
  }
}

 

ㄴ BigInteger 를 활용했다.

ㄴ BigInteger에는 divide, remainder 메서드가 있기 때문에 이를 이용해서 문제를 풀었다.

 

n.divide(m)
=> n을 m으로 나눈 수를 얻을 수 있다.

n.remainder(m)
=> n을 m으로 나눈 나머지를 얻을 수 있다.

 

 

https://www.acmicpc.net/problem/2338

 

2338번: 긴자리 계산

첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A×B를 출력한다. 각각을 출력할 때, 답이 0인 경우를 제외하고는 0으로 시작하게 해서는 안 된다(1을 01로 출력하면 안 된다는 의미).

www.acmicpc.net

 

ㄴ 참고로 이 문제도 같은 방식을 이용했다.

 

풀이

import java.io.*;
import java.math.BigInteger;

public class Main33 {
  private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
  public static void main(String[] args) throws IOException {
    BigInteger A = new BigInteger(br.readLine());
    BigInteger B = new BigInteger(br.readLine());

    bw.write(A.add(B) + "\n");
    bw.write(A.subtract(B) + "\n");
    bw.write(A.multiply(B) + "\n");
    br.close();
    bw.close();
  }
}