-
[백준/BOJ] 13136번 : Do Not Touch Anything (JAVA / 자바)백준 2022. 1. 25. 20:21
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/13136
- 문제 -
난이도 브론즈 4 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
가로 세로 cctv 커버 사이즈가 있다. cctv가 가로줄을 커버할 수 있는 정도 ( 가로 / 커버사이즈), 세로줄을 커버할 수 있는 정도 (세로 / 커버 사이즈) 가 있을거다. 이건 말 그대로 가로와 세로를 구한 것이고 전체 커버 할 수 있는 수를 구하기 위해서는 넓이를 구해야한다. 가로 * 세로. 단순한 넓이 구하는 식이다.
하지만 주의해야 할 점은 최대 크기인데 가로가 100만이고 세로가 100만이면 넓이는 10의 12제곱이 된다. 이건 딱봐도 int로는 안될거같으니 long을 사용해야 한다.
cctv가 커버할 수 있는 가로 세로는 딱 맞아 떨어지지 않을 수 있다. 가로는 5인데 cctv는 2를 커버 할 수 있으면 결국 필요한 갯수는 3개가 된다. 이건 나눴을때 올림을 사용하면 된다. Math.ceil 함수를 사용하겠다.
-풀이-
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); double R = Double.parseDouble(st.nextToken()); double C = Double.parseDouble(st.nextToken()); double N = Double.parseDouble(st.nextToken()); //풀이방법에 적은 것처럼 int로는 안되기 때문에 long 사용 //가로와 세로 값을 구해서 반올림 long RCCTV = (long) Math.ceil(R / N); long CCCTV = (long) Math.ceil(C / N); //넓이 long CCTV = RCCTV * CCCTV; System.out.println(CCTV); } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.
'백준' 카테고리의 다른 글
[백준/BOJ] 14470번 : 전자레인지 (JAVA / 자바) (0) 2022.01.26 [백준/BOJ] 13866번 : 팀 나누기 (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 11948번 : 과목선택 (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 11948번 : 과목선택 (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 11943번 : 파일 옮기기 (JAVA / 자바) (0) 2022.01.25