[Baekjoon] 4679_The Snail
๋ฌธ์ (์ถ์ฒ: 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์ผ๋ก ์ ์ฅ
์ต์ข ์คํจ, ์ฑ๊ณต์ ๋ฐ๋ผ ์ถ๋ ฅํ๋ค.