
문제

내 풀이 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- : substractx : multiple÷ : divide% : remainder% : mode(음수)