> 개발-IT-인터넷/> JAVA

[해커랭크(HackerRank) JAVA 풀이] - Java Datatypes

jini:) 2021. 8. 4. 16:05
728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Introduction > Java Datatypes
 

HackerRank

HackerRank is the market-leading technical assessment and remote interview solution for hiring developers. Learn how to hire technical talent from anywhere!

www.hackerrank.com

 

Java에는 8가지 기본 데이터 유형이 있습니다.

  • boolean : true 또는 false
  • char : 단일 16비트 유니코드 문자
  • byte : 8비트 부호 있는 정수
  • short : 16비트 부호 있는 정수
  • int : 32비트 부호 있는 정수
  • long : 64비트 부호 있는 정수
  • float : 단일 정밀도 32비트 IEEE 754 부동 소수점
  • double : 복수 정밀도 64비트 IEEE 754 부동 소수점

 

Reference : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

 

Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics)

The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated

docs.oracle.com

 

이번 챌린지에서는 정수 값(byte, short, int, long)을 유지하는데 사용되는 기본 요소를 사용합니다.

입력 정수가 주어지면 해당 입력을 적절하게 저장할 수 있는 기본 데이터 유형을 결정해야 합니다.

 

Input Format : 

첫번째 줄은 테스트 케이스의 수를 나타내는 정수 T입니다.

각 테스트 케이스 T는 임의로 크거나 작을 수 있는 정수 n이 있는 단일 라인으로 구성됩니다.

 

Output Format : 

각 입력 변수 n과 적절한 기본 데이터 유형에 대해 주어진 기본 요소가 이를 저장할 수 있는지 확인해야 합니다. 저장할 수 있다면 다음을 출력하세요.

n can be fitted in:
* dataType

적절한 데이터 유형이 두 개 이상인 경우 각각을 한 줄에 출력하고 크기별로 정렬합니다. (예: byte < short < int < long)

앞에서 언급한 네가지 기본 형식 중 하나에 숫자를 저장할 수 없으면 다음을 출력하세요.

n can't be fitted anywhere.

 

 

Sample Input : 

5
-150
150000
1500000000
213333333333333333333333333333333333
-100000000000000

 

Sample Output :

-150 can be fitted in:
* short
* int
* long
150000 can be fitted in:
* int
* long
1500000000 can be fitted in:
* int
* long
213333333333333333333333333333333333 can't be fitted anywhere.
-100000000000000 can be fitted in:
* long

 

Explanation :

-150은 short, int, long에 저장할 수 있습니다.

213333333333333333333333333333333333은 매우 크며, 이 문제에서 논의된 기본 데이터 유형의 허용 가능한 값 범위를 벗어납니다.

 

 

Code :

import java.util.*;
import java.io.*;

class Solution{
    public static void main(String []argh)
    {
        Scanner sc = new Scanner(System.in);
        int t=sc.nextInt();

        for(int i=0;i<t;i++)
        {
            try
            {
                long x=sc.nextLong();
                System.out.println(x+" can be fitted in:");
                if(x>=-128 && x<=127)System.out.println("* byte");
                if(x>=-32768 && x<=32767)System.out.println("* short");
                if(x>=Math.pow(-2, 31) && x<=(Math.pow(2, 31)-1))System.out.println("* int");
                if(x>=Math.pow(-2, 63) && x<=(Math.pow(2, 63)-1))System.out.println("* long");
            }
            catch(Exception e)
            {
                System.out.println(sc.next()+" can't be fitted anywhere.");
            }
        }
    }
}

 

자료형에 따른 표현범위
자료형 분류 표현범위
Boolean 논리형 false, true
char 문자형 \u0000 ~ \uFFFF
byte 정수형 -128 ~ 127
short 정수형 -32768 ~ 32767
int 정수형 -2147483648 ~ 2147483647 (약 21억)
long 정수형 -922337036854775808 ~ 9223372036854775807
float 실수형 1.40239846E-45f ~ 3.40282347E+38f
double 실수형 4.94065645841246544E-324 ~ 1.79769313486231570E+308


실수형에서의 정밀도
정밀도가 높을수록 오차의 범위가 줄어든다.
float의 정밀도는 7자리, double의 정밀도는 15자리.
사용할 변수의 값의 범위가 7자리가 넘으면 정밀도를 고려하여 double을 사용해야 한다.


코드에서 int형과 long형을 처리할 때 범위에 -1을 하는 이유
데이터 유형의 범위를 나타내는 것이다.
정수 데이터 유형은 부호 비트를 고려해야 하며, 부호 비트는 음수와 양수를 구별하는 데 사용된다.
해당 데이터 유형의 최대 값과 최소 값이 부호 비트를 고려한 범위임을 나태니기 위한 표준적인 방법이다.

 

 

 

개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.

 

 

 

728x90
반응형