[백준/JAVA] 16428번 A/B -3

정은아·2024년 6월 7일

[알고리즘] 수학 모음

목록 보기
103/152
post-thumbnail

문제

내 풀이 1 : 50점

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main extends Exception {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(br.readLine());

        BigInteger numA = new BigInteger(st.nextToken());
        BigInteger numB = new BigInteger(st.nextToken());

        BigInteger answerA = numA.divide(numB);
        BigInteger answerB = numA.remainder(numB);

        sb.append(answerA).append("\n");
        sb.append(answerB).append("\n");

        System.out.println(sb.toString());

    }
}

내 풀이 2 : 630점

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main extends Exception {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(br.readLine());

        BigInteger numA = new BigInteger(st.nextToken());
        BigInteger numB = new BigInteger(st.nextToken());

        // numA와 numB가 음,양수일 때를 나눠 출력한다.
        if (numA.compareTo(BigInteger.ZERO) == -1 && numB.compareTo(BigInteger.ZERO) == -1){
            BigInteger answerA = numA.divide(numB).add(BigInteger.ONE);
            BigInteger answerB = numA.remainder(numB).subtract(numB);

            sb.append(answerA).append("\n");
            sb.append(answerB).append("\n");
        }else if(numA.compareTo(BigInteger.ZERO) == -1 && numB.compareTo(BigInteger.ZERO) == 1){
            BigInteger answerA = numA.divide(numB).subtract(BigInteger.ONE);
            BigInteger answerB = numA.remainder(numB).add(numB);

            sb.append(answerA).append("\n");
            sb.append(answerB).append("\n");
        }else{
            BigInteger answerA = numA.divide(numB);
            BigInteger answerB = numA.remainder(numB);

            sb.append(answerA).append("\n");
            sb.append(answerB).append("\n");
        }

        System.out.println(sb.toString());


    }
}

느낀점

630점은 또 처음 받아본다.. 찾아보니 이 문제는 원래 브론즈 4단계였다가 3단계로 조정된듯하다.

이 문제는 BigInteger를 쓸 수 있는지 묻는 것 외에도 함정이 하나 더 있다.
나머지가 양수여야한다는 점이다. 그 부분을 if문으로 조건을 걸어 해결했다.

간단한 BigInteger 연산 함수

  • + : add
  • - : substract
  • x : multiple
  • ÷ : divide
  • % : remainder
  • % : mode(음수)
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글