백준 알고리즘

백준 1008번 자바 JAVA 풀이

코딩사무소장 2023. 4. 14. 16:48
반응형

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

 

1008번: A/B

두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net



 

얼핏 보면 덧셈이나 뺄셈과 같은 방식으로 풀면 된다고 생각하기 쉽다.

힌트는 예제에서 소수점이 나왔다는 것이다.

 

우리가 지금까지 a와 b를 int로 두어서 정수만을 표현할 수 있었다.

a를 b로 나누었을 때, 정상적으로 출력이 되기 위해서는 a와 b를 실수로 표현해야 한다.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double a = sc.nextInt();
        double b = sc.nextInt();
        
        System.out.println(a/b);
        sc.close();
    }
}

우선 정답 코드는 이렇다.

double a = sc.nextInt();
double b = sc.nextInt();

System.out.println(a/b);

 

int a = sc.nextInt();  를

double a = sc.nextInt(); 로 바꾸었다.

그리고 a/b를 하면 소수점이 나와도 정상적으로 출력이 된다.

 

정수에는 byte short char int long 

실수에는 float double 이 있다.

float보다 double이 포괄적이다.

 

정수형

byte, short, int, long이 있지만, 대체로 int만 사용하면 된다.

데이터 타입 / 메모리의 크기 / 표현 가능 범위

byte              1 byte              -128 ~ 127

short             2 byte              -32,768 ~ 32,767

int                 4 byte              -2,147,483,648~2,147,483,647

long              8 byte              -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

 

byte를 어떤 상황에 사용할까?

byte district = 1; //경기도

대한민국의 행정구역은 100개가 넘지 않으니 byte로 충분하다.

 

국가별 인구의 수를 변수에 담으려면 int를 사용하는 것이 알맞다.

int population = 50000000;

 

long a = 2000000000;

long b = 1;

20억을 가져도 1을 가져도 long 타입의 파일을 가지면 8byte를 사용한다.

 

int a = 2000000000;

long b = 2000000000;

intlong보다 적은 용량을 가진다.

 

결론은 정수를 다룰 땐 int를 사용하면 된다.

실수를 사용할 때는 double을 사용하면 된다.

 

이 부분을 간과하고 풀어서 다시 정답률이 34.762%이다. 나도 틀릴뻔 ㅎㅎ

반응형