본문 바로가기

백준 알고리즘

백준 1008번 자바 JAVA 풀이

반응형

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%이다. 나도 틀릴뻔 ㅎㅎ

반응형

'백준 알고리즘' 카테고리의 다른 글

백준 10926번 자바 JAVA 풀이  (0) 2023.04.15
백준 10869번 자바 JAVA 풀이  (0) 2023.04.15
백준 1001번 자바 JAVA 풀이  (0) 2023.04.14
백준 1000번 자바 JAVA 풀이  (0) 2023.04.14
백준 2557번 자바 java 풀이  (0) 2023.04.14