본문 바로가기
코딩테스트/Baekjoon

[백준/JAVA] 2869번: 달팽이는 올라가고 싶다

by 희동츄루리 2023. 8. 16.
728x90

https://www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

 

import java.io.*;
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(), " "); // 띄어쓰기 기준으로 분리하겠다!
		
		int up = Integer.parseInt(st.nextToken()); // 올라가는 길이
		int down = Integer.parseInt(st.nextToken()); // 내려가는 길이
		int length = Integer.parseInt(st.nextToken()); // 막대의 전체 길이
				
		int day = (length - down) / (up - down); // 어차피 정상에 도달하면 내려가지 않기 때문에 (length - down)에서 실질적으로 올라가는 길이 나눠주기
		
		if((length-down)%(up-down)!=0) { // 나눈 결과가 딱 떨어지지 않는다면 한 번 더 올라가야 한다는 뜻
			day++; // +1 해주기
		}
		
		System.out.println(day);

    }
}

 

  • StringTokenizer
    • BufferedReader: 라인 단위로 읽어들임 ⇒ 컴마, 스페이스로 문자열을 구분하기 위해 StringTokenizer 사용!
    • 생성 방식
      1. StringTokenizer st = new StringTokenizer(문자열); → 띄어쓰기 기준으로 문자열 분리
      2. StringTokenizer st = new StringTokenizer(문자열, 구분자); → 구분자 기준으로 문자열 분리
      3. StringTokenizer st = new StringTokenizer(문자열, 구분자, true/false); → 구분자 기준으로 문자열 분리(true: 구분자 토큰에 포함, false: 구분자 토큰에 미포함)
    • 메서드
리턴값 메서드명 역할
boolean hasMoreTokens() 남아있는 토큰이 있으면 true 리턴, 더 이상 토큰이 없으면 false 리턴
String nextToken() 객체에서 다음 토큰 반환
String nextToken(String delim) delim 기준으로 다음 토큰 반환
boolean hasMoreElements() hasMoreTokens와 동일하지만 잘 안씀
Object nextElements() nextToken 메서드와 동일하지만 문자열 아닌 객체 리턴
int countTokens() 총 토큰 개수 리턴