1. 문제
https://www.acmicpc.net/problem/2869
2. 풀이 과정
*Key : 마지막 단계에는 정상에 올라가면 내려올 필요가 없다. 시간제한 주의
1) 마지막 단계 전까지 날짜를 계산한다.
day = (top-plus)/pminus;//pminus는 (올라가는 거리)-(미끄러지는 거리)
2) 마지막 단계 전까지 올라간 거리를 계산한다.
top-day*pminus
3) 남은 거리가 올라갈 거리보다 크면 +2일, 작으면 +1일을 한다.
[전체 코드]
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 plus, pminus, top;
int day;
StringTokenizer st = new StringTokenizer(br.readLine());
plus = Integer.parseInt(st.nextToken());
pminus = plus-Integer.parseInt(st.nextToken());
top = Integer.parseInt(st.nextToken());
day = (top-plus)/pminus;
if(top-day*pminus>plus)
System.out.print(day+2);
else
System.out.print(day+1);
}
}
3. 관련 함수 정리 - BufferedReader, BufferedWriter
1) 사용하는 이유 : 속도가 빠름
2) BufferedReader : 버퍼를 이용한 입력
- String으로 입력 받아서 가공 필요
- readLine할 때마다 예외처리
import java.io.BufferedReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//String형으로 받아오기
String s = bf.readLine();
//Int형으로 받아오기
int n = Integer.parseInt(bf.readLine());
//Int형 여러 개 받아오기
String Tokenizer st = new StringTokenizer(s);
int n1 = Integer.parseInt(st.nextToken());
int n2 = Integer.parseInt(st.nextToken());
}
}
3) BufferedWriter : 버퍼를 이용한 출력
import java.io.BufferedWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = "test";
bw.write(s+"\n"); // 출력하기
bw.flush(); // 버퍼에 남아있는 값 모두 출력 = 비우기
bw.close(); // 모두 출력하고 stream 닫기
}
}
'코딩문제풀이 > Baekjoon' 카테고리의 다른 글
[Python_Greedy] 백준 2217번 : 로프 (0) | 2021.08.03 |
---|---|
[Python_Greedy] 백준 1541번 : 잃어버린 괄호 (0) | 2021.08.02 |
[Python_Greedy] 백준 11047번 : 동전 0 (0) | 2021.08.02 |
[Java] 백준 1929번 : 소수 구하기 (0) | 2021.03.01 |
[Java, Python] 백준 1011번 : Fly me to the Alpha Centauri (2) | 2021.03.01 |