20151018


*이문제는 Scanner 와 System.out.println() 출력문을 알고 있어야 합니다.
*이문제는 dovelet 에 있는 알고리즘 문제입니다.




삼각형 넓이 구하기/triangle


프로그램 명: triangle

제한시간: 1 초 

삼각형 넓이를 구하는 문제이다.

넓이 = 밑변 * 높이 / 2

입력

두 자연수가 입력으로 주어진다. 두 수는 1000 이하의 자연수이고 ,차례대로 밑변과 높이이다.

출력

넓이를 소수 이하 2 자리 ( 세 번째 자리에서 반올림 ) 까지 출력한다.

입출력 예

입력

9 83 

출력

373.50



문제 풀이



1) 풀이

import java.util.Scanner;

public class Test {
 
	Scanner sc = new Scanner(System.in);
	
	public static void main(String[] args) {
		 Scanner sc = new Scanner(System.in);
	       
		 double bottom = sc.nextDouble();
	     double hight = sc.nextDouble();
	         
	     double area = (bottom*hight)/2;
	     long temp  = (long)(area*100);
	     area = temp*0.01;
	     System.out.println(area);
	}
}

2) 풀이

import java.util.Scanner;

		Scanner sc = new Scanner(System.in);
	double bottom;
	double hight;
	
	public static void main(String[] args) {
		Test ts = new Test();
		ts.input();
		ts.triangle();
	}
	void input(){
		bottom = sc.nextDouble();
		hight = sc.nextDouble();
	}
	void triangle(){
		double area = (bottom*hight)/2.0;
		long temp  = (long)(area*100);
		area = temp;
		area = temp*0.01;
		System.out.println(area);
	}




*1번 풀이와 2번 풀이 코드 내용은 같습니다. 다만 2번 풀이는 함수를 사용했을 뿐이죠.


우선 2개의 자연수 값을 입력 받기 위해서 bottom, hight 변수를 선언을 하고 그 변수에 입력값을 받습니다.

그럼 삼각형의 넓이 = 높이*밑면/2 를 area 변수에 저장하고 100을 곱해서 정수형 변수에 넣어주고 다시 0.01 을 곱해서 소수점 자리가 가능한 double 변수에 저장하고 출력합니다.


여기서 왜 100을 곱했다가 0.01 을 곱해서 다시 원상 복귀 하는지 잘 이해하셔야 합니다.
소수점 자리 값을 정수형으로 형변환을 해주면 소수점 자리값을 버립니다. 이것을 이용해서 소수점 2째 자리까지 남겨야 하기 때문에 소수점 2째 자리를 정수값의 범위안으로 곱해주고  그뒤 형변환을 함으로써 버리려고자 했던  소수점 3째 자리이후로 지워줍니다. 그다음 다시 0.01 을 곱해서 원하는 소수점 2째 자리까지 소수점이 남게 되는거죠.

예) 1.2345     소수점 2째 자리 까지 출력   1.23
   그러면 1.2345 * 100    ->     123.45   ->   정수형   ->   123   ->   123 * 0.01    ->   1.23
   원하는 소수점 2째 자리 까지만 남겨졌습니다.









+ Recent posts