๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 1756_ํ”ผ์ž ๊ตฝ๊ธฐ

๋ฟŒ์•ผ._. 2023. 2. 24. 09:34

Gold V

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/1756)

< ํ”ผ์ž ๊ตฝ๊ธฐ>

 

๋ฌธ์ œ ํ’€์ด

 

๋จผ์ € ์˜ค๋ธ์˜ ์ง€๋ฆ„์„ ์œ„์—์„œ๋ถ€ํ„ฐ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ง€๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด์—ˆ๋‹ค.

๋ฐ”๊ฟ”์ค€ ํ›„ ๋ฐ‘์—์„œ๋ถ€ํ„ฐ ํ”ผ์ž๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉฐ ์œ„์น˜๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ด๋ถ„ ํƒ์ƒ‰์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ์ง€๋งŒ, 

๋‚œ ๋ฐ‘์—์„œ๋ถ€ํ„ฐ ํ”ผ์ž๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ•˜์˜€๋‹ค.

 

- ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ฝ”๋“œ (Java)

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

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st=new StringTokenizer(bf.readLine());
		
		// ์˜ค๋ธ์˜ ๊นŠ์ด, ํ”ผ์ž ๋ฐ˜์ฃฝ์˜ ๊ฐœ์ˆ˜
		int D=Integer.parseInt(st.nextToken());
		int N=Integer.parseInt(st.nextToken());
		
		// ์˜ค๋ธ์˜ ์ง€๋ฆ„
		int arr[]=new int[D];
		st=new StringTokenizer(bf.readLine());
		for(int i=0; i<D; i++) {
			arr[i]=Integer.parseInt(st.nextToken());
		}
		
		// ํ”ผ์ž ๋ฐ˜์ฃฝ์˜ ์ง€๋ฆ„
		int pizza[]=new int[N];
		st=new StringTokenizer(bf.readLine());
		for(int i=0; i<N; i++) {
			pizza[i]=Integer.parseInt(st.nextToken());
		}
		
		boolean flag=false;
		boolean visited[]=new boolean[D];
		int cnt=0;
		
		for(int i=0; i<N; i++) {
			if(flag) break;
			for(int j=0; j<D; j++) {
				if(!visited[j]) {
					if(pizza[i]>arr[j]) {
						if(j==0) {
							flag=true;
							break;
						}
						visited[j-1]=true;
						cnt+=1;
						break;
					}
				}else {
					if(j==0) {
						flag=true;
						break;
					}
					if(!visited[j-1] && pizza[i]<=arr[j-1]) {
						visited[j-1]=true;
						cnt+=1;
						break;
					}
					
				}
			}
		}
		if(cnt!=N) System.out.println(0);
		else {
			for(int i=0; i<D; i++) {
				if(visited[i]) {
					System.out.println(i+1);
					break;
				}
			}
		}
	}
}

์ด๋ ‡๊ฒŒ ๋‹ค ์™„ํƒํ•˜๋‹ˆ๊นŒ ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚  ์ˆ˜๋ฐ–์—.. ^^

 

 - my solution (Java)

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

public class _1756_ {

	public static void main(String[] args) throws IOException {
		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st=new StringTokenizer(bf.readLine());
		
		// ์˜ค๋ธ์˜ ๊นŠ์ด, ํ”ผ์ž ๋ฐ˜์ฃฝ์˜ ๊ฐœ์ˆ˜
		int D=Integer.parseInt(st.nextToken());
		int N=Integer.parseInt(st.nextToken());
		
		// ์˜ค๋ธ์˜ ์ง€๋ฆ„
		int arr[]=new int[D];
		st=new StringTokenizer(bf.readLine());
		for(int i=0; i<D; i++) {
			arr[i]=Integer.parseInt(st.nextToken());
			if(i>0) {
				if(arr[i-1]<arr[i]) arr[i]=arr[i-1];
			}
		}
		
		// ํ”ผ์ž ๋ฐ˜์ฃฝ์˜ ์ง€๋ฆ„
		int pizza[]=new int[N];
		st=new StringTokenizer(bf.readLine());
		for(int i=0; i<N; i++) {
			pizza[i]=Integer.parseInt(st.nextToken());
		}
		
		boolean visited[]=new boolean[D];
		int j=D-1, cnt=0, result=0;
		
		for(int i=0; i<N; i++) {
			while(j>=0) {
				if(arr[j]>=pizza[i]) {
					visited[j]=true;
					result=j+1;
					cnt+=1;
					j-=1;
					break;
				}
				j-=1;
			}
		}
		if(cnt!=N) System.out.println(0);
		else System.out.println(result);
	}
}

 

Main

- ์˜ค๋ธ์˜ ๊นŠ์ด(D), ํ”ผ์ž ๋ฐ˜์ฃฝ์˜ ๊ฐœ์ˆ˜(N) ์ž…๋ ฅ

- ์˜ค๋ธ์˜ ์ง€๋ฆ„ ์ž…๋ ฅ๊ณผ ๋™์‹œ์— ์ง€๋ฆ„ ๊ธธ์ด ๋งž์ถฐ์คŒ

- ํ”ผ์ž ๋ฐ˜์ฃฝ์˜ ์ง€๋ฆ„ ์ž…๋ ฅ

- ์˜ค๋ธ ๋ฐ‘์—์„œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜๋ฉฐ ํ”ผ์ž์˜ ์ง€๋ฆ„๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ณณ์— ํ”ผ์ž ๋ฐ˜์ฃฝ์„ ๋„ฃ์–ด์คŒ.

- ํ”ผ์ž ๋ฐ˜์ฃฝ์„ ๋‹ค ๋„ฃ์ง€ ๋ชปํ•˜๋ฉด 0 ์ถœ๋ ฅ, ๋‹ค ๋„ฃ์—ˆ๋‹ค๋ฉด ๋งˆ์ง€๋ง‰ ํ”ผ์ž ๋ฐ˜์ฃฝ์˜ ์œ„์น˜๋ฅผ ์ถœ๋ ฅ

 

โ“ ์—ฌ๊ธฐ์„œ '์˜ค๋ธ์˜ ์ง€๋ฆ„ ์ž…๋ ฅ๊ณผ ๋™์‹œ์— ์ง€๋ฆ„ ๊ธธ์ด ๋งž์ถฐ์คŒ'์ด ๋ฌด์Šจ ๋œป์ธ๊ฐ€?

= ๋งŒ์•ฝ์— ์˜ค๋ธ์˜ ์ง€๋ฆ„์ด 5 6 7๊ณผ ๊ฐ™์ด ์ฃผ์–ด์กŒ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. ์œ„์—์„œ๋ถ€ํ„ฐ ํ”ผ์ž ๋ฐ˜์ฃฝ์ด ๋“ค์–ด์˜ค๋ฉด

์•„๋ฌด๋ฆฌ ๋ฐ‘์— ์˜ค๋ธ์˜ ์ง€๋ฆ„์ด ํฌ๋‹คํ•ด๋„ 5๋ณด๋‹ค ํฐ ํ”ผ์ž ๋ฐ˜์ฃฝ์€ ๋“ค์–ด๊ฐ€์ง€ ๋ชปํ•  ๊ฒƒ์ด๋‹ค. 

๊ทธ๋Ÿฌ๋ฏ€๋กœ 5 6 7 -> 5 5 5๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ž‘์—…์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.


์ƒ๊ฐ๐Ÿค”

 

์ฒ˜์Œ์— ๋‹ค ํƒ์ƒ‰ํ•ด์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋‹ค... ๋ชฐ๋ผ์„œ ์นœ๊ตฌํ•œํ…Œ ์„ค๋ช… ๋“ค์—ˆ๋˜ ๋ฌธ์ œ..