๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 10657_Cow Jog

๋ฟŒ์•ผ._. 2025. 6. 12. 11:45
๋ฌธ์ œ(์ถœ์ฒ˜: 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