티스토리 뷰
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
첫번째 풀이
import java.util.Scanner;
// (1 ≤ B < A ≤ V ≤ 1,000,000,000)!
public class ct3 {
public static void main(String[] args) {
Scanner a = new Scanner(System.in);
Scanner b = new Scanner(System.in);
Scanner v = new Scanner(System.in);
// 아침에 올라간 높이
int A = a.nextInt();
// 저녁에 떨어진 높이
int B = b.nextInt();
// 총 높이
int V = v.nextInt();
// 카운트
int cnt = 0;
int C;
int D = 0;
while(D < V){
// 하루에 올라간 높이
C = A - B;
// 올라간 높이에 다음날의 C를 추가한 것이 D
D += C;
if(D >= V){
break;
}
cnt++;
}
System.out.println(cnt);
}
}
두번째 예제인 5, 1, 6 을 했을때 기대값인 2일이 나오지 않고 1이 나온다.
2일 째에서 break의 위치가 cnt를 진행하지 않고 더한 즉시 출력이 되어서 그런것 같다.
그렇다고 cnt++의 위치를 if문 안에 넣으니 예제1의 예제값이 1이 추가되어서 나온다.
일단 돌려보니 아래와 같은 에러가 나옴
런타임 에러 (NoSuchElement) |
Scanner에서 이 에러가 발생하는 경우는 더 이상 입력받을 수 있는 값이 없을 때 입니다.
Scanner (Java Platform SE 8 )
Scans the next token of the input as a float. This method will throw InputMismatchException if the next token cannot be translated into a valid float value as described below. If the translation is successful, the scanner advances past the input that match
docs.oracle.com
라고 나와 있고 더 찾아보니 시간도 반복문을 사용하면 오래걸려 정답처리가 안된다고 한다.
참고 풀이
import java.io.*;
import java.util.StringTokenizer;
// (1 ≤ B < A ≤ V ≤ 1,000,000,000)!
public class ct3 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken()); // 낮에 오른 높이
int b = Integer.parseInt(st.nextToken()); // 밤에 떨어지는 높이
int v = Integer.parseInt(st.nextToken()); // 총 올라야할 높이
int days = (v-a) / (a-b); // 달팽이가 정상에 오르기 전날까지의 날
if((v - a) % (a-b) != 0) // 달팽이가 하루에 오르는 높이보다 정상까지의 높이가 짧을때
days++;
System.out.println(days+1); // 마지막날 오른 기록은 계산식에 포함되어있지 않으므로 출력에 1일을 더해준다.
}
}
알아야 할것 : BufferedReader, StringTokenizer, 풀이 과정
'사견 > 알고리즘' 카테고리의 다른 글
[Java] 더하기 사이클 (0) | 2022.07.02 |
---|---|
[Java] 소수 구하기 (0) | 2022.06.30 |
[Java] ACM 호텔 (0) | 2022.06.30 |
[Java] 베르트랑 공준 (0) | 2022.06.28 |
[Java] 설탕 배달 (0) | 2022.06.28 |
- it책 리뷰
- 짝지어제거하기
- 한권으로끝내기리눅스마스터2급
- 객체 지도
- JWT
- 리눅스마스터2급
- 함께모으기
- 맥 error
- LEVEL2
- 토스페이먼츠
- 프로그래머스
- SpringSecurity
- CompositionAPI
- script setup
- vue.js
- vuex
- 책리뷰
- pinia
- 객체지향의 사실과 오해
- springboot
- 객체지향
- 다음 큰 숫자
- 타임리프
- java 플레이그라운드
- 스프링부트
- Vue.js3
- mybatis구현
- for
- 정수형으로 변환
- 알고리즘
- Total
- Today
- Yesterday