๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/10657)
< Cow Jog >
๋ฌธ์ ํ์ด
๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
1) ์๋ค์ ์๋์ ๋ง๊ฒ ์ด๋์ํค๋ฉด์ ๊ทธ๋ฃน ๋ง๋ค๊ธฐ
2) ์๋๋ง ๋ณด๊ณ ๊ทธ๋ฃน ๋ง๋ค๊ธฐ -> ์์ ๋ณด๋ค ๋ค์ ์๋ ์๊ฐ ์๋๊ฐ ๋น ๋ฅด๋ค๋ฉด ๊ฒฐ๊ตญ ๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด๊ฒ ๋๋ค.
my solution (Java)
1)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Stack;
import java.util.StringTokenizer;
public class _10657_ { // Cow Jog
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(bf.readLine());
ArrayList<Long[]> list = new ArrayList<>();
for (int i = 0; i < N; i++) {
st = new StringTokenizer(bf.readLine());
list.add(new Long[] { Long.parseLong(st.nextToken()), Long.parseLong(st.nextToken()) });
}
Stack<Long[]> stack = new Stack<>();
boolean flag = false;
while (true) {
for (int j = list.size() - 1; j >= 0; j--) {
if (!stack.isEmpty() && stack.peek()[1] < list.get(j)[1]) {
flag = true;
}
if (stack.isEmpty() || list.get(j)[0] + list.get(j)[1] < stack.peek()[0]) {
stack.add(new Long[] { list.get(j)[0] + list.get(j)[1], list.get(j)[1] });
}
}
list.clear();
while (!stack.isEmpty()) {
list.add(stack.pop());
}
if (!flag) {
System.out.println(list.size());
break;
}
flag = false;
}
}
}
๋ณ์)
N : ์ ๋ง๋ฆฟ์
list : ์ ๋ ฅ๊ฐ
stack : Stack <Long []>
flag : ๋ค์ ์๋ ์๊ฐ ์๋๊ฐ ๋น ๋ฅธ ๊ฒฝ์ฐ
์์ ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์์ ์๋งํผ ํ์ฌ ์์น์ ์๋๋ฅผ ์ ๋ ฅ๋ฐ์ ArrayList์ ์ ์ฅํ๋ค. ๋ค์ ์๋ ์๊ฐ ์์ ์๋ ์๋ณด๋ค ์๋๊ฐ ๋น ๋ฅธ ๊ฒฝ์ฐ๊ฐ ์์ ๋๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) Stack์ ํ์ฌ ์์น๊ฐ ํฐ ์๋ถํฐ ์๋์ ๋ง๊ฒ ์ด๋ํ๋ฉด์ ์ ์ฅํ๋ค. ์ด๋, stack์ ์๋ ์๋ณด๋ค ๋ฉ๋ฆฌ ๊ฐ์ง ๋ชปํ๋ฏ๋ก stack์ ์๋ ์๋ณด๋ค ์ด๋ํ ์์น๊ฐ ์์ ๊ฒฝ์ฐ์๋ง ์ ์ฅํ๋ค. ์๋๋ฅผ ํ์ธํ๋ฉฐ stack์ ์๋ ๊ฐ๋ณด๋ค ์๋๊ฐ ๋น ๋ฅธ ๊ฒฝ์ฐ flag๋ฅผ true๋ก ์ ์ฅํ๋ค.
2) stack์ ๊ฐ์ ArrayList์ ์ ์ฅํ๋ค.
3) ๋ค์ ์๋ ์๊ฐ ์์ ์๋ ์๋ณด๋ค ์๋๊ฐ ๋น ๋ฅธ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด ๊ทธ๋ฃน์ด ํฉ์ณ์ง ์ผ์ด ์์ผ๋ฏ๋ก ArrayList์ ํฌ๊ธฐ๋ฅผ ์ถ๋ ฅํ๊ณ ์ข ๋ฃํ๋ค.
2)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Stack;
import java.util.StringTokenizer;
public class _10657_ { // Cow Jog
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(bf.readLine());
ArrayList<int[]> list = new ArrayList<>();
for (int i = 0; i < N; i++) {
st = new StringTokenizer(bf.readLine());
list.add(new int[] { Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()) });
}
Stack<Integer> stack = new Stack<>();
for (int i = N - 1; i >= 0; i--) {
if (stack.isEmpty() || stack.peek() >= list.get(i)[1]) {
stack.add(list.get(i)[1]);
}
}
System.out.println(stack.size());
}
}
๋ณ์)
N : ์ ๋ง๋ฆฟ์
list : ์ ๋ ฅ๊ฐ
stack : Stack <Integer>
์์ ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. N๋งํผ ํ์ฌ ์์น์ ์๋๋ฅผ ์ ๋ ฅ๋ฐ์ ArrayList์ ์ ์ฅํ๋ค. Stack์ ํ์ฌ ์์น๊ฐ ๋จผ ์์ ์์ผ๋ก ์๋๋ฅผ ์ ์ฅํ๋ค. ์ด๋, stack์ ์๋ ๊ฐ์ ์๋๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋๋ง ์ ์ฅํ๋ค.
์ต์ข stack์ ํฌ๊ธฐ๋ฅผ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 6187_Going to the Movies (1) | 2025.06.16 |
---|---|
[Baekjoon] 16524_Database of Clients (1) | 2025.06.13 |
[Baekjoon] 4836_์ถค (1) | 2025.06.11 |
[Baekjoon] 9770_GCD (1) | 2025.06.10 |
[Baekjoon] 5966_Cow Cotillion (1) | 2025.06.09 |