https://www.acmicpc.net/problem/1008
얼핏 보면 덧셈이나 뺄셈과 같은 방식으로 풀면 된다고 생각하기 쉽다.
힌트는 예제에서 소수점이 나왔다는 것이다.
우리가 지금까지 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;
int가 long보다 적은 용량을 가진다.
결론은 정수를 다룰 땐 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 |