๋ฌธ์ (์ถ์ฒ: 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๋ก ๋ฐ๊ฟ์ฃผ๋ ์์ ์ ํด์ฃผ๋ ๊ฒ์ด๋ค.
์๊ฐ๐ค
์ฒ์์ ๋ค ํ์ํด์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ์๋ค... ๋ชฐ๋ผ์ ์น๊ตฌํํ ์ค๋ช ๋ค์๋ ๋ฌธ์ ..
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 18126_๋๊ตฌ๋ฆฌ ๊ตฌ๊ตฌ (0) | 2023.02.26 |
---|---|
[Baekjoon] 16174_์ ํ์ ์ฉฐ๋ฆฌ (Large) (0) | 2023.02.24 |
[Baekjoon] 3187_์์น๊ธฐ ๊ฟ (0) | 2023.02.22 |
[Baekjoon] 1240_๋ ธ๋์ฌ์ด์ ๊ฑฐ๋ฆฌ (0) | 2023.01.15 |
[Baekjoon] 6593_์๋ฒ ๋น๋ฉ (0) | 2023.01.08 |