๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/16120
๐ฎ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
์คํ์ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
‘P’๊ฐ ๋ค์ด์ค๋ ๊ฒฝ์ฐ ์คํ์ ์ ์ฅํ๊ณ , ‘A’๊ฐ ๋ค์ด์ค๋ ๊ฒฝ์ฐ๋ PPAP ๋ฌธ์์ด์ธ์ง ํ๋จํด์ฃผ์๋ค.
‘A’๊ฐ ๋ค์ด์ค๋ ๊ฒฝ์ฐ PPAP ๋ฌธ์์ด์ธ์ง ํ๋จํ๊ธฐ ์ํด ๋ฐ๋ก ๋ค์ ์ธ๋ฑ์ค ๋ฌธ์๊ฐ ‘P’์ธ์ง ํ๋จํ๊ณ ์คํ ์ฌ์ด์ฆ๊ฐ 2 ์ด์ (์คํ์๋ ‘P’๋ง ๋ค์ด๊ฐ)์ธ์ง ํ์ธ ํ ์คํ์ ๋๋ฒ popํด ์ฃผ์๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ์คํ์์ pop๋ ๋ฌธ์ 2๊ฐ PP์ ํ์ฌ ์ธ๋ฑ์ค A, ๋ค์ ์ธ๋ฑ์ค P๊ฐ ๋์ด ๋ฌธ์์ด PPAP๊ฐ ๋ง๋ค์ด์ง๋ฏ๋ก ๋ค์ ์ธ๋ฑ์ค ‘P’๋ก ๋์ฒด๊ฐ ๊ฐ๋ฅํ๋ค.
์ด์ธ์ ๊ฒฝ์ฐ๋ PPAP๋ฌธ์์ด์ P๋ก ๋์ฒดํ ์ ์์ผ๋ฏ๋ก “NP”๋ฅผ ๋ฆฌํดํ๋ค.
๋ชจ๋ PPAP ๋ฌธ์์ด์ด P๋ก ๋์ฒด๋๋ค๋ฉด, ๋ง์ง๋ง์๋ ์ฒ์ ์์ ๋ฌธ์์ธ P๋ง ๋จ๊ธฐ ๋๋ฌธ์ ์คํ ์ฌ์ด์ฆ๊ฐ 1์ด๋ฉด PPAP ์๋ ๊ฒฝ์ฐ๋ NP๋ฅผ ๋ฆฌํดํด์ฃผ์๋ค.
๐ฉ Java ์ฝ๋
package com.algorithm.Baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main_16120_PPAP {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String rst = checkPPAP(str);
System.out.println(rst);
br.close();
}
private static String checkPPAP(String str) {
Stack<Character> stack = new Stack<>();
int index = 0;
for (char c : str.toCharArray()) {
if(c == 'P') stack.push(c);
// A์ธ ๊ฒฝ์ฐ
else {
// A ๋ค์ P์ธ ๊ฒฝ์ฐ PPAP ์ฑ๋ฆฝ
// ๋ค์ ๋ฌธ์ ํ์ธ ์ํด ์ธ๋ฑ์ค ์ฒดํฌ, PP์ญ์ ์ํด ์คํ ์ฌ์ด์ฆ ์ฒดํฌ. ๋ค์ ๋ฌธ์ P์ธ์ง ์ฒดํฌ
if(index < str.length() - 1 && stack.size() >= 2 && str.charAt(index+1) == 'P') {
stack.pop();
stack.pop();
}
// ์ด์ธ์ ๊ฒฝ์ฐ PPAP๋ฅผ P๋ก ๋์ฒดํ ์ ์์
else {
return "NP";
}
}
index++;
}
return stack.size() == 1 ? "PPAP" : "NP";
}
}
'Algorithm > ๊ทธ๋ฆฌ๋(Greedy)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค, Java] 5186๋ฒ : ํํฐ๋ฅผ ์ด์ด๋ผ!!! (0) | 2022.07.06 |
---|---|
[๋ฐฑ์ค, Java] 10775๋ฒ : ๊ณตํญ (0) | 2022.06.21 |
[๋ฐฑ์ค, Java] 1052๋ฒ : ๋ฌผ๋ณ (0) | 2022.05.17 |
[ํ๋ก๊ทธ๋๋จธ์ค, Java] ๋จ์์นด๋ฉ๋ผ (0) | 2022.04.28 |
[ย ๋ฐฑ์ค, Java] 1339๋ฒ : ๋จ์ด ์ํ (0) | 2022.04.27 |