CODING TEST/baekjoon

#1008 - A/B

iamyuunzo 2025. 7. 6. 20:12

📌 문제 정보

- 문제 이름 : #1008번 - A/B

- 문제 링크: https://www.acmicpc.net/problem/1008

 

 

📌 문제 요약

- 핵심 조건: 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성

- 시간복잡도 제한: 없음

 

 

📌 내 풀이 및 코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int A, B;
        A = sc.nextInt();
        B = sc.nextInt();
        System.out.println(A/B);
    }
}

 

<-- 내가 처음에 어떻게 풀었는지 -->

- 처음에는 그냥 System.out.println(A/B); 이렇게만 했는데 입력값들을 넣으니 0만 출력 됐음.

- 소수점으로 출력되려면 정수(int)가 아닌 실수로 표현을 해야했는데 문법이 기억나지 않아서 찾음.

 

 

📌 최종 정답 및 풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int A, B;
        A = sc.nextInt();
        B = sc.nextInt();
        System.out.println((double) A/B);
    }
}

<-- 풀이 요약 -->

- 기본 실수 출력해도 자바가 Double 타입 기본 정밀도(보통 15~16자리 정도)를 유지하기 때문에 오차 범위 안에 들면 맞음.

- A와 B 둘 다 int면 → int끼리 나누면 int 결과만 나옴 → ex) 1/3은 0 → 그래서 한 쪽을 강제로 double로 만들어서 실수 나눗셈 되게 만듦

 

 

<-- 다른 풀이 요약 -->

        System.out.printf("%.10f\n", (double) A / B);

- "실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다. 10-9 이하의 오차를 허용한다는 말은 꼭 소수 9번째 자리까지만 출력하라는 뜻이 아니다." -> 출력 형식 제한 있는 문제는 무조건 printf 쓰는 게 실수 방지에 좋음.
- printf : 소수점 자리수를 딱 고정하기 때문에 형식상 정확함. (습관화 하기)

- 코딩 테스트는 출력 형식 실수 때문에 오답 되는 경우가 많음. (%.6f, %.10f 이런거 습관처럼 쓰면 훨씬 안정적.)

- "소수점 N번째 자리까지 출력" 이라고 조건 있을 때 출력 형식이 정확해야 정답 처리 되니까..

- %.10f = 소수점 10자리



📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

- println으로는 자리수가 들쭉날쭉 → 틀렸다고 나올 수 있음.

- printf("%.10f")는 자리수 맞춤 → 정답 처리 OK.

- double : 실수