๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 4679_The Snail

๋ฟŒ์•ผ._. 2025. 5. 22. 15:40
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/4679)

< The Snail >

 

๋ฌธ์ œ ํ’€์ด 

 

U๋งŒํผ ์˜ค๋ฅด๊ณ , D๋งŒํผ ๋‚ด๋ ค๊ฐ„๋‹ค. ํ•˜๋ฃจ๊ฐ€ ์ง€๋‚ ์ˆ˜๋ก ์ฒซ๋‚  ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋Š” U x (F/100) ๋งŒํผ์”ฉ ๊นŽ์ธ๋‹ค. while๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด H๋ณด๋‹ค ๋†’์ด ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋Š”์ง€, ์˜ค๋ฅผ ์ˆ˜ ์—†๋Š”์ง€ ๊ตฌํ•œ๋‹ค.  

 

my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.OutputStreamWriter;

public class _4679_ { // The Snail

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;

		int H, D, F;
		Double U;

		st = new StringTokenizer(bf.readLine());
		while ((H = Integer.parseInt(st.nextToken())) != 0) {
			U = Double.parseDouble(st.nextToken());
			D = Integer.parseInt(st.nextToken());
			F = Integer.parseInt(st.nextToken());

			double p = 0;
			int d = 0;
			double l = U * (double) F / 100;
			boolean flag = false;
			while (true) {
				d += 1;

				p += U;
				if (p > H) {
					break;
				}

				p -= D;
				if (p < 0) {
					flag = true;
					break;
				}

				U -= l;
				if (U < 0) {
					U = 0.0;
				}
			}
			if (flag) {
				bw.write("failure on day " + d + "\n");
			} else {
				bw.write("success on day " + d + "\n");
			}
			st = new StringTokenizer(bf.readLine());
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
H, U, D, F : ์šฐ๋ฌผ์˜ ๋†’์ด, ๋‚ฎ ๋™์•ˆ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ, ๋ฐค์— ๋ฏธ๋„๋Ÿฌ์ ธ ๋‚ด๋ ค๊ฐ€๋Š” ๊ฑฐ๋ฆฌ, ํ”ผ๋กœ ๊ณ„์ˆ˜
p : ํ˜„์žฌ ์œ„์น˜
d : ์„ฑ๊ณตํ•œ ๋‚ 
l : ํ”ผ๋กœ๋„์— ์ธํ•ด ์†์‹ค๋œ ๊ฑฐ๋ฆฌ
flag : ์„ฑ๊ณต ์—ฌ๋ถ€

 

 H๊ฐ’์ด 0์ด ์•„๋‹ ๋•Œ๊นŒ์ง€ H, U, D, F ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ํ”ผ๋กœ๋„์— ์ธํ•ด ์†์‹ค๋œ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด๋‘๊ณ  ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) d+1

2) U๋งŒํผ ์˜ค๋ฅด๊ธฐ

3) ์˜ค๋ฅธ ํ›„์— H๋ณด๋‹ค ์ปค ์šฐ๋ฌผ์—์„œ ๋‚˜์™”๋‹ค๋ฉด ์ข…๋ฃŒ

4) D๋งŒํผ ๋ฏธ๋„๋Ÿฌ์ง

5) ๋ฏธ๋„๋Ÿฌ์ง„ ํ›„์— 0๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์‹คํŒจํ•œ ๊ฒƒ์ด๋ฏ€๋กœ flag๋ฅผ true๋กœ ์ €์žฅ ํ›„ ์ข…๋ฃŒ

6) ํ”ผ๋กœ๋„์— ์˜ํ•ด ๋‚ฎ ๋™์•ˆ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ ๊ฐ์†Œ

7) ๋‚ฎ ๋™์•ˆ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ 0๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š์œผ๋ฏ€๋กœ 0์œผ๋กœ ์ €์žฅ

 

์ตœ์ข… ์‹คํŒจ, ์„ฑ๊ณต์— ๋”ฐ๋ผ ์ถœ๋ ฅํ•œ๋‹ค.