백준 14713 앵무새

큐 실버3 드가자

https://www.acmicpc.net/problem/14713

해당 문제는 그림과같이 설명할수있다..

문장이 있으면 앵무새 문장 세트에서 한개씩 뽑아와서 마지막으로 입력받은 문장들을 구성할수있는지?

그리고 고려해야될점은 예제입력을 보면 알수있다.

  1. 앵무새의 단어 구성순서를 지키는가

  2. 알맞은 단어로 구성하고있는가

그래서 그걸 고려하면

단어 구성순서를 지키기 위해 선입선출 큐를 이용하면 I LOVE YOU 하면

I나오고 LOVE나오고 YOU가 나오기 때문에 순서를 지킬수있고

알맞은 단어구성은 결국 큐에서 다뽑아내고 큐에 남아있는 값들을 체킹해주면 간단한문제이다

다음은 소스코드

import java.util.*;
import java.io.*;
public class 앵무새 {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int type = Integer.parseInt(br.readLine());
		Queue[] qlist = new Queue[type];
		for(int i=0;i<type;i++) {
			qlist[i] = new LinkedList<String>();
			StringTokenizer st = new StringTokenizer(br.readLine());
			
			while(st.hasMoreTokens()) {
				qlist[i].add(st.nextToken());
			}
		}
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		boolean flag = false;
		while(st.hasMoreTokens()) {
			boolean cflag = true;
			String word = st.nextToken();
			for(int i=0;i<type;i++) {
				if(!qlist[i].isEmpty()) {
				if(qlist[i].peek().equals(word)) {
					qlist[i].poll();
					cflag = false;
					break;
				}
				}
			}
			
			
			
			// 매치하는값이 없을떄
			if(cflag) {
				flag = true;
				break;
			}	
		}
		
		for(int i=0;i<type;i++) {
			if(!qlist[i].isEmpty()) {
				flag = true;
			}
		}
		
		if(flag) {
			System.out.println("Impossible");
		}
		else {
			System.out.println("Possible");
		}
	}

}

얼른 골1까지 돌파해보자

좋은 웹페이지 즐겨찾기