-
[백준/BOJ] 10179번 : 쿠폰 (JAVA / 자바)백준 2022. 1. 25. 17:26
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/10179
- 문제 -
난이도 브론즈 4 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
for문과 String.format을 이용
처음에 Math.round를 사용했다 틀리고 이유를 한참 생각하다 알았다...
Math.round는 반올림 할 자리에 0이 없다면 0을 삭제한다. 하지만 String.format은 그대로 리턴한다.
문제에서 원하는 출려값은 반올림 하지 않아도 .00이 주어지는 것이기에 여기서는 String,format이 맞다.
바로 파악하지 못한 것은 순전히 각 방식의 이해도 부족이다...(공부가 더더욱 절실해졌다...)
하얀 글씨가 출력 값이다 두개씩 있는데 그 중 위에꺼가 Math.round이고 아래가 String.format이다.
-풀이-
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Math { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //첫 줄에 테이트 케이스의 수를 입력 int N = Integer.parseInt(br.readLine()); //for문에 i를 0부터 N까지 지정하므로써 N번 반복하게 설정 for(int i = 0; i < N; i++) { //반복 횟수 만큼 금액을 입력. 입력값이 실수이니 double형으로 형변환 double money = Double.parseDouble(br.readLine()); //20프로 할인은 곱하기 0.8로 연산 money *= 0.8; System.out.println("$" + String.format("%.2f", money)); } } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.
'백준' 카테고리의 다른 글
[백준/BOJ] 10768번 : 특별한 날 (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 10707번 : 수도요금 (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 10162번 : 전자레인지 (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 10156번 : 과자 (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 10101번 : 삼각형 외우기 (JAVA / 자바) (0) 2022.01.25