https://www.acmicpc.net/problem/10179
조건이 적용되는 입출력 문제.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BJ10179 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int Case = Integer.parseInt(br.readLine()); // 테스트 케이스 수
double []arr = new double[Case];
for(int i = 0; i < Case; i++){
arr[i] = Double.parseDouble(br.readLine());
double sum = arr[i] * 80 / 100; //20% 할인이니깐 80 곱하고 100으로 나누기 해준다.
System.out.println("$" + String.format("%.2f", sum)); //String format을 통해 소수점 둘째 표현
}
}
}
입출력 문제라 Buffer를 사용하였다. 먼저 테스트케이수 입력을 위해 int Case를 설정해주었고, 입력하는 값들을 배열에 담아 주었다. 입력시에도 소수점 둘째까지 표현하는 지라 double형으로 선언했다.
이후 입력한 테스트케이스에 따라 for을 돌려주었고, 쿠폰이 적용된 값을 sum으로 선언하였다.
특수문자 처리를 위해 "$" 붙여주었고, 소수점 둘째짜리까지 선언해야하는 지라 String.format으로 "%.2f"를 통해 소수점 둘째자리까지 표현하였다.
여기서 잠깐 추가적으로 살펴보자면
실수형은 float와 double형이 있는데, float를 사용할때는 꼭 뒤에 f를 붙여줘야한다. 이유는 실수형을 다룰때 기본적으로 double형은 d가 default로 인식되어 뒤에 d붙이지 않아도 오류가 발생하지 않지만, float는 f를 붙이지 않으면 데이터 타입이 맞지 않아 오류가 난다고 한다.
소수점을 표현하는 방법은 Math.round() : 반올림 // Math.ceil() : 올림 // Math.floor() : 버림 이 있는데, 경우에 맞게 사용해주면 된다. 단, String.format으로 소수점을 자를 경우엔 자동 반올림이 되기 때문에 주의 할 것. 문제에서는 자동 반올림이 적용된다고해서 String.format을 써도 큰 문제는 없었다.
표로 잠깐 정리를 해보면
값이 우리가 흔히 알고 있는 파이값 3.1415926535 라고 했을때
%s : 문자열 그대로 출력 | String.format("%s", "hello"); | hello |
%10s : 문자열 총 10자리이며, 없으면 왼쪽은 공백 | String.format("%10s", "hello"); | hello |
%-10s : 문자열 총 10자리이며, 없으면 오른쪽은 공백 | String.format("%-10s", "hello:); | hello // 여기까지 출력 |
%d : 정수형 그대로 출력 | String.format("%d", 10); | 10 |
%5d : 총 5자리이며, 없으면 왼쪽 공백 | String.format("%5d", 10); | 10 |
%05d : 총 5자리이며, 없으면 왼쪽 0 | String.format("%05d", 10); | 00010 |
%f : 실수형 그대로 출력 | String.format("%f", 3.141592f); | 3.141592 |
%.2f : 실수형 소수 둘째자리까지 출력 | String.format("%.2f", 3.141592f); | 3.15 |
%10.2f : 문자열 총 10자리이며 소수 둘째자리까지 출력 | String.format("%10.2f", 3141592f); | 3.15 |
'Algorithm' 카테고리의 다른 글
[Java] 백준 23825번 SASA 모형을 만들어보자 (0) | 2022.01.13 |
---|---|
[Java] 백준 11948번 과목선택 (0) | 2021.12.30 |
[Java] 백준 10039번 평균 점수 (0) | 2021.12.29 |
[Java] 백준 5575번 타임 카드 (0) | 2021.12.23 |
[Java] 백준 5543번 상근날드 (0) | 2021.12.23 |