01-09 18:44
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[BAEKJOON] ๋ฐฑ์ค€ ํ 1966 :: ํ”„๋ฆฐํ„ฐ ํ ๋ณธ๋ฌธ

Algorithm/Baekjoon

[BAEKJOON] ๋ฐฑ์ค€ ํ 1966 :: ํ”„๋ฆฐํ„ฐ ํ

miinsun 2022. 4. 18. 16:48

๐Ÿ’ฌ  ๋ฌธ์ œ ์„ค๋ช…

์—ฌ๋Ÿฌ๋ถ„๋„ ์•Œ๋‹ค์‹œํ”ผ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋ฆฐํ„ฐ ๊ธฐ๊ธฐ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์ธ์‡„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์ธ์‡„ ๋ช…๋ น์„ ๋ฐ›์€ ‘์ˆœ์„œ๋Œ€๋กœ’, ์ฆ‰ ๋จผ์ € ์š”์ฒญ๋œ ๊ฒƒ์„ ๋จผ์ € ์ธ์‡„ํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์„œ๊ฐ€ ์Œ“์ธ๋‹ค๋ฉด Queue ์ž๋ฃŒ๊ตฌ์กฐ์— ์Œ“์—ฌ์„œ FIFO - First In First Out - ์— ๋”ฐ๋ผ ์ธ์‡„๊ฐ€ ๋˜๊ฒŒ ๋œ๋‹ค.
ํ•˜์ง€๋งŒ ์ƒ๊ทผ์ด๋Š” ์ƒˆ๋กœ์šด ํ”„๋ฆฐํ„ฐ๊ธฐ ๋‚ด๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€๋Š”๋ฐ, ์ด ํ”„๋ฆฐํ„ฐ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ธ์‡„๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

1. ํ˜„์žฌ Queue์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ‘์ค‘์š”๋„’๋ฅผ ํ™•์ธํ•œ๋‹ค.
2. ๋‚˜๋จธ์ง€ ๋ฌธ์„œ๋“ค ์ค‘ ํ˜„์žฌ ๋ฌธ์„œ๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ๋‹ค๋ฉด, ์ด ๋ฌธ์„œ๋ฅผ ์ธ์‡„ํ•˜์ง€ ์•Š๊ณ  Queue์˜ ๊ฐ€์žฅ ๋’ค์— ์žฌ๋ฐฐ์น˜ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋ฐ”๋กœ ์ธ์‡„๋ฅผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Queue์— 4๊ฐœ์˜ ๋ฌธ์„œ(A B C D)๊ฐ€ ์žˆ๊ณ , ์ค‘์š”๋„๊ฐ€ 2 1 4 3 ๋ผ๋ฉด C๋ฅผ ์ธ์‡„ํ•˜๊ณ , ๋‹ค์Œ์œผ๋กœ D๋ฅผ ์ธ์‡„ํ•˜๊ณ  A, B๋ฅผ ์ธ์‡„ํ•˜๊ฒŒ ๋œ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์ด ํ•  ์ผ์€, ํ˜„์žฌ Queue์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ์ˆ˜์™€ ์ค‘์š”๋„๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์–ด๋–ค ํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๋Š”์ง€ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์˜ ์˜ˆ์—์„œ C๋ฌธ์„œ๋Š” 1๋ฒˆ์งธ๋กœ, A๋ฌธ์„œ๋Š” 3๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๊ฒŒ ๋œ๋‹ค.

 

๐Ÿ”จ  ์ž…์ถœ๋ ฅ ์˜ˆ

์ž…๋ ฅ 

  • ์ฒซ ์ค„์— ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ๋‘ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๋ฌธ์„œ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 100)๊ณผ, ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•œ ๋ฌธ์„œ๊ฐ€ ํ˜„์žฌ Queue์—์„œ ๋ช‡ ๋ฒˆ์งธ์— ๋†“์—ฌ ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ M(0 ≤ M < N)์ด ์ฃผ์–ด์ง„๋‹ค.
  • ์ด๋•Œ ๋งจ ์™ผ์ชฝ์€ 0๋ฒˆ์งธ๋ผ๊ณ  ํ•˜์ž.
  • ๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” N๊ฐœ ๋ฌธ์„œ์˜ ์ค‘์š”๋„๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค.
  • ์ค‘์š”๋„๋Š” 1 ์ด์ƒ 9 ์ดํ•˜์˜ ์ •์ˆ˜์ด๊ณ , ์ค‘์š”๋„๊ฐ€ ๊ฐ™์€ ๋ฌธ์„œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

์ถœ๋ ฅ

  • ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ 1)

3
1 0
5
4 2
1 2 3 4
6 0
1 1 9 1 1 1

 

์˜ˆ์ œ ์ถœ๋ ฅ 1)

1
2
5

 

โ€‹

๐Ÿ’ป  Main.java

  • queue๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค
  • Paper ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์ค‘์š”๋„์™€ ํ์— ๋“ค์–ด๊ฐ„ index๋ฅผ ๊ธฐ์–ตํ•˜๋„๋กํ–ˆ๋‹ค
/* ๋ฐฑ์ค€ ์ž๋ฃŒ๊ตฌ์กฐ - 1966 :: ํ”„๋ฆฐํ„ฐ ํ */
import java.util.*;
import java.io.*;

class Paper {
	int order;
	int index;
	
	Paper(int order, int index){
		this.order = order;
		this.index = index;
	}
}

public class Main {
	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();	// ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜

		for(int i = 0; i < T; i++) {
			int N = sc.nextInt();	// ๋ฌธ์„œ์˜ ๊ฐœ์ˆ˜
			int M = sc.nextInt();	// ๊ถ๊ธˆํ•œ ๋ฌธ์„œ ํ์˜ ์ธ๋ฑ์Šค
			
			Queue<Paper> q = new LinkedList<>();
			for(int j = 0; j < N; j++) {
				q.add(new Paper(sc.nextInt(), j));
			}
			
			int order = 1;
			while(!q.isEmpty()) {
				Paper tmp = q.poll();
				boolean skip = false;
				
				// ํ ์•ˆ์— ์ค‘์œ ๋„๊ฐ€ ๋” ํฐ paper๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
				for(Paper x : q) {
					if(x.order > tmp.order) {
						skip = true;
						break;
					}
				}
				
				if(skip) {	// ์ค‘์š”๋„๊ฐ€ ๋” ํฐ Paper๊ฐ€ ์žˆ์œผ๋ฉด
					q.add(tmp);	// ๊ฐ€์žฅ ๋์— ๋‹ค์‹œ ์ถ”๊ฐ€
				}
				else {	// ๊ฐ€์žฅ ์ค‘์œ ๋„๊ฐ€ ๋†’์œผ๋ฉด
					if(M == tmp.index) {	// ์ฐพ๊ณ ์žํ•œ ๋ฌธ์„œ๋ฅผ ์ฐพ์œผ๋ฉด ์ถœ๋ ฅ ํ›„ ์ข…๋ฃŒ
						System.out.println(order);
						break;
					}
					order++;
				}
			}
		}
		
		sc.close();
	}
}
Comments