알고리즘/백준

[백준 단계별/JAVA] 1단계. 입출력과 사칙연산 (BigDeciaml 등)

happii 2021. 12. 21. 22:04

1. [2557번]  Hello World

public class Main {
    public static void main(String[] args) {
        System.out.print("Hello World!");
    }
}

 


2. [10718번]  We love kriii

public class Main {
    public static void main(String[] args) {
        System.out.println("강한친구 대한육군");
        System.out.print("강한친구 대한육군");
    }
}

 

 


3. [10171번]  고양이

public class Main {
    public static void main(String[] args){
        System.out.println("\\    /\\");  // "\"출력 -> "\\"로 입력
        System.out.println(" )  ( ')");
	System.out.println("(  /  )");
	System.out.println(" \\(__)|");
    }
}

백슬래시를 출력하기 위해서는 앞에 백슬래시를 한번 더 입력해야 한다.

 

 


4. [10172번]  개

public class Main {
public static void main(String[] args) {
		System.out.println("|\\_/|");
		System.out.println("|q p|   /}");
		System.out.println("( 0 )\"\"\"\\");	// " 출력 -> \" 입력
		System.out.println("|\"^\"`    |");
		System.out.print("||_/=\\\\__|");
	}
}

" 을 출력하기 위해서는 앞에 백슬러시를 추가해야 한다.

 

 

 


5. [1000번]  A+B

import java.util.*;	//Scanner를 사용하기 위해 추가
public class Main {
	public static void main(String[] args) {
		int num1, num2;
		Scanner scanner = new Scanner(System.in);	//스캐너 클래스 객체 생성
		
		num1 = scanner.nextInt();	//num1 변수에 숫자를 입력받음.
		num2 = scanner.nextInt();
		
		System.out.println(num1 + num2);
	}
}

 

 


6. [1008번]  A/B

1008번

import java.util.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.math.MathContext;

public class Main {
	public static void main(String[] args) {
		BigDecimal num1, num2;
		Scanner scanner = new Scanner(System.in);
		
		num1 = scanner.nextBigDecimal();
		num2 = scanner.nextBigDecimal();
		
		System.out.print(num1.divide(num2, MathContext.DECIMAL128));
	}
}

 

※ 큰 실수 다루기:  BigDecimal !

 

 

double 무엇이 문제인가?

소수점 이하의 수를 다룰 때 double 타입은 사칙연산시 기대한 값과 다른 값을 출력한다. 

이유는 double 타입이 내부적으로 수를 저장할 때 이진수의 근사치를 저장하기 때문이다. 저장된 수를 다시 십진수로 표현하면서 문제가 발생한다. BigDecimal 타입은 내부적으로 수를 십진수로 저장하여 아주 작은 수와 큰 수의 연산에 대해 거의 무한한 정밀도를  보장한다

 

DECIMAL128: IEEE 754-2008에 의해 표준화된, 부호와 소수점을 수용하며, 최대 34자리까지 표현 가능한 10진수를 저장할 수 있는 형식이다. 

 

♨ BigDecimal 비교 연산

BigDecimal 비교연산

 

♨ BigDecimal 사칙 연산

BigDecimal 사칙연산

 

참고.

https://jsonobject.tistory.com/466

 

Java, BigDecimal 사용법 정리

BigDecimal? BigDecimal은 Java 언어에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법이다. 소수점을 저장할 수 있는 가장 크기가 큰 타입인 double은 소수점의 정밀도에 있어 한계가 있어 값이

jsonobject.tistory.com