01-09 18:44
Recent Posts
Recent Comments
관리 메뉴

miinsun

[Algorithm]μ•Œκ³ λ¦¬μ¦˜ μžλ°”_41 ꡐ윑 κ³Όμ • 섀계 λ³Έλ¬Έ

Algorithm/Java

[Algorithm]μ•Œκ³ λ¦¬μ¦˜ μžλ°”_41 ꡐ윑 κ³Όμ • 섀계

miinsun 2022. 1. 10. 20:37

 

πŸ’¬ λ¬Έμ œ μ„€λͺ…

ν˜„μˆ˜λŠ” 1λ…„ κ³Όμ •μ˜ μˆ˜μ—…κ³„νšμ„ μ§œμ•Ό ν•©λ‹ˆλ‹€. μˆ˜μ—…μ€‘μ—λŠ” ν•„μˆ˜κ³Όλͺ©μ΄ μžˆμŠ΅λ‹ˆλ‹€. 이 ν•„μˆ˜κ³Όλͺ©μ€ λ°˜λ“œμ‹œ μ΄μˆ˜ν•΄μ•Ό ν•˜λ©°, κ·Έ μˆœμ„œλ„ μ •ν•΄μ Έ μžˆμŠ΅λ‹ˆλ‹€.

λ§Œμ•½ 총 κ³Όλͺ©μ΄ A, B, C, D, E, F, Gκ°€ 있고,
μ—¬κΈ°μ„œ ν•„μˆ˜κ³Όλͺ©μ΄ CBA둜 주어지면 ν•„μˆ˜κ³Όλͺ©μ€ C, B, Aκ³Όλͺ©μ΄λ©° 이 μˆœμ„œλŒ€λ‘œ κΌ­ μˆ˜μ—…κ³„νšμ„ μ§œμ•Ό ν•©λ‹ˆλ‹€.
μ—¬κΈ°μ„œ μˆœμ„œλž€ Bκ³Όλͺ©μ€ Cκ³Όλͺ©μ„ μ΄μˆ˜ν•œ 후에 λ“€μ–΄μ•Ό ν•˜κ³ ,
Aκ³Όλͺ©μ€ C와 Bλ₯Ό μ΄μˆ˜ν•œ 후에 λ“€μ–΄μ•Ό ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

ν˜„μˆ˜κ°€ C, B, D, A, G, E둜 μˆ˜μ—…κ³„νšμ„ 짜면 μ œλŒ€λ‘œ 된 μ„€κ³„μ΄μ§€λ§Œ
C, G, E, A, D, B μˆœμ„œλ‘œ μ§°λ‹€λ©΄ 잘 λͺ» μ„€κ³„λœ μˆ˜μ—…κ³„νšμ΄ λ©λ‹ˆλ‹€.

μˆ˜μ—…κ³„νšμ€ κ·Έ μˆœμ„œλŒ€λ‘œ μ•žμ— μˆ˜μ—…μ΄ 이수되면 λ‹€μŒ μˆ˜μ—…μ„ μ‹œμž‘ν•˜λ‹€λŠ” κ²ƒμœΌλ‘œ ν•΄μ„ν•©λ‹ˆλ‹€.
μˆ˜μ—…κ³„νšμ„œμƒμ˜ 각 κ³Όλͺ©μ€ 무쑰건 μ΄μˆ˜λœλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.

ν•„μˆ˜κ³Όλͺ©μˆœμ„œκ°€ 주어지면 ν˜„μˆ˜κ°€ μ§  N개의 μˆ˜μ—…μ„€κ³„κ°€ 잘된 것이면 “YES",
잘λͺ»λœ 것이면 ”NO“λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

 

 

πŸ”¨ μž…μΆœλ ₯ 예

μž…λ ₯ - 첫 쀄에 ν•œ 쀄에 ν•„μˆ˜κ³Όλͺ©μ˜ μˆœμ„œκ°€ μ£Όμ–΄μ§‘λ‹ˆλ‹€. λͺ¨λ“  κ³Όλͺ©μ€ 영문 λŒ€λ¬Έμžμž…λ‹ˆλ‹€.

두 번 μ§Έ 쀄뢀터 ν˜„μˆ˜κ°€ μ§  μˆ˜μ—…μ„€κ³„κ°€ μ£Όμ–΄μ§‘λ‹ˆλ‹€.(μˆ˜μ—…μ„€κ³„μ˜ κΈΈμ΄λŠ” 30μ΄ν•˜μ΄λ‹€)

CBA
CBDAGE

좜λ ₯ - 첫 쀄에 μˆ˜μ—…μ„€κ³„κ°€ 잘된 것이면 “YES", 잘λͺ»λœ 것이면 ”NO“λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

YES

 

πŸ’‘ ν•΄κ²° 방법

μˆ˜μ—… κ³„νšμ„ Order Queue에 λ‹΄μ•„λ‘”λ‹€.
Plan을 ν•˜λ‚˜μ”© λŒλ©΄μ„œ 검사할 λ•Œ, 큐와 plan이 겹치면 큐λ₯Ό λΉ„μš΄λ‹€.
Plan의 ν•œλ°”ν€΄λ₯Ό λͺ¨λ‘ λŒμ•˜μ„ λ•Œ, 큐가 λΉ„μ–΄μžˆμœΌλ©΄ YESλ₯Ό 좜λ ₯ν•œλ‹€.

​

πŸ’» Solution.java

import java.util.*;

public class Main {

	public String solution(String s, String order) {
		String answer = "NO";
		Queue<Character> q = new LinkedList<>();

		//큐 μ΄ˆκΈ°ν™”
		for(char c : order.toCharArray()) {
			q.add(c);
		}
		
		for(char c: s.toCharArray()) {
			if(q.isEmpty()) {
				answer = "YES";		
				break;
			}
			
			if(q.peek() == c) {
				q.poll();
			}
		}
		
        return answer;
	}
	
	public static void main(String[] args){
		Main main  = new Main();
		Scanner sc =new Scanner(System.in);
		
		String order = sc.next();
		String s = sc.next();
		
		System.out.println(main.solution(s, order));
		
		sc.close();
		return ;
	}
}

 

 

 

Comments