-
[백준/BOJ] 10834번 : 벨트 (JAVA / 자바)백준 2022. 2. 13. 15:44
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/10834
10834번: 벨트
첫 줄에는 벨트의 개수를 나타내는 자연수 M(1 ≤ M ≤ 1,000)이 주어진다. 다음 M개의 줄에는 1번 벨트부터 순서대로 벨트로 이어진 두 바퀴의 회전수의 비를 나타내는 두 개의 양의 정수 a, b와 벨
www.acmicpc.net
- 문제 -
난이도 브론즈 3 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
(JAVA / 자바) Scanner 와 Bufferedreader
안녕하세요~ 코딩하는 코알못 코메인입니다. 이번엔 백준 문제 풀면서 계속 언급될 scanner와 bufferedreader에 대한 간단한 정리를 해볼거다. 자바에서 입력은 scanner와 bufferedreader가 있다. 우선 각자
comain.tistory.com
풀이 방법
주어진 벨트의 다음 벨트가 몇바퀴도는지, 그리고 어느 방향으로 도는지를 구하는 문제이다.
방향은 시계방향으로 기본적으로 돌지만 1이 오면 방향이 틀어진다.
그렇다면 방향을 나타내는 변수를 만들고 1일 올 경우 변수를 바꿔주면 된다. 시계 방향이면 0, 반대 방향이면 1이라고 했을 때 벨트가 1일때 변수가 0이면 1로 바꿔주고, 1이면 0으로 바꿔준다. 벨트가 0일때 변수가 0이면 0 그대로 가고, 1이면 1 그대로 간다.
기본 회전수는 1이다. 그럼 여기에 1과 2가 오면 1로 나누고 2를 곱해주면 2번째가 1분에 2바퀴를 돈다는 걸 알 수 있다.
그렇다면 다음 수는 1 5면, 2에 1을 나누고, 5를 곱해준다. 그렇다면 3번째는 1분에 10바퀴를 돈다는 걸 알 수 있다. 그리고 다음이 2 1이면, 10에 2를 나누고 1을 곱하면 4번째는 1분에 5바퀴를 돈다는걸 알 수 있다. 이 방법을 코드에 넣어보자.
코드를 보자.
-풀이-
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)); int M = Integer.parseInt(br.readLine()); //belt = 벨트 방향을 저장할 변수 //beltm = 벨트가 회전하는 횟수를 저장할 변수 int belt = 0; int beltm = 1; for(int i = 0; i < M; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); int s = Integer.parseInt(st.nextToken()); //벨트의 모양이 주어졌을때 1이면 방향을 틀어준다. if(s == 1) { if(belt == 0) belt = 1; else if(belt == 1) belt = 0; } //벨트의 회전수를 공식대로 넣어준다. beltm = (beltm / a) * b; } //사이 공백을 두고 출력 System.out.println(belt + " " + beltm); } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수분들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠습니다.
'백준' 카테고리의 다른 글
[백준/BOJ] 10872번 : 팩토리얼 (JAVA / 자바) (0) 2022.02.13 [백준/BOJ] 10871번 : X보다 작은 수 (JAVA / 자바) (0) 2022.02.13 [백준/BOJ] 1010번 : 다리 놓기 (JAVA / 자바) (6) 2022.02.13 [백준/BOJ] 1145번 : 적어도 대부분의 배수 (JAVA / 자바) (0) 2022.02.12 [백준/BOJ] 1110번 : 더하기 사이클 (JAVA / 자바) (0) 2022.02.12