๋ฐฑ์ค 25556 ํฌ์คํ
์ฒซ ์ ๊ทผ ๋ฐฉ์ (์ค๋ต)
4๊ฐ์ ์คํ์ผ๋ก ๋ถ๋ฆฌํ์ง ์๊ณ ๋จ์ํ ์์ด์ ์ค๋ฆ์ฐจ์์ด ๋๊ธธ ๋๋ง๋ค ๋ค๋ฅธ ์คํ์ ๋ด์์ผ๋๋ค๊ณ ์๊ฐํ์ฌ ์คํ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํค๊ณ ์คํ ์นด์ดํธ 4์ด๊ณผ์ NO๋ฅผ ์ถ๋ ฅํ๋ ๋ก์ง์ผ๋ก ๊ตฌํ.
์๋ชป๋ ์ด์ : ํ ๋ฒ ์ค๋ฆ์ฐจ์์ด ๋๊ธฐ๋ฉด ํด๋น ์คํ์ ์ฌ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ.
๊ตฌ๊ธ๋ง ์ดํ์ ๋ค์ ์ ๊ทผ
1. ์์ด์ ๋ฐฐ์ด๋ฆฌ์คํธ์ ๋ด๊ธฐ
ArrayList<Integer> numlist = new ArrayList<>();
for(int i=0; i<N; i++){
numlist.add(sc.nextInt());
}
2. 4๊ฐ์ ์คํ ๊ณต๊ฐ ์์ฑ ํ ๋น๊ต๋ฅผ ์ํ ์ด๊ธฐ๊ฐ๋ค์ ๋ฃ์ด์ค๋ค.
ArrayList<Stack<Integer>> stackList = new ArrayList<>();
for(int i=0; i<4; i++) {
stackList.add(new Stack<>());
stackList.get(i).add(Integer.MIN_VALUE);
}
3. ์์ด๋ค์ ์๋ฅผ ์์๋๋ก ์คํ์ ๋ด๋ ๋ก์ง ๊ตฌํ
cleanFlag => ์ฒญ์ ๊ฐ๋ฅ ์ฌ๋ถ
placeInStack(num, stackList) => ํด๋น num์ stack ์ค ํ๋์ ๋ด์ ์ ์์ผ๋ฉด true, ์๋ค๋ฉด false
boolean cleanFlag = true;
for(int num : numlist){
if(!placeInStack(num, stackList)){
cleanFlag = false;
break;
}
}
4. ์์ด์ ํด๋น ์๋ฅผ 4๊ฐ์ ์คํ๋ค ์ค ํ๋์ ๋ฃ์ ์ ์๋์ง ํ์ธ
i๋ฒ์งธ stack์ ๊ผญ๋๊ธฐ ๊ฐ๋ณด๋ค ์์ด์ ์๊ฐ ํด ๊ฒฝ์ฐ ์คํ์ ๋ด์ ์ ์๋ค. 4๊ฐ์ ์คํ ์ด๋๊ณณ์๋ ๋ด์ ์ ์์ ๊ฒฝ์ฐ false ๋ฆฌํด.
public static boolean placeInStack(int num, ArrayList<Stack<Integer>> stackList){
for(Stack<Integer> stack : stackList){
if(num > stack.peek()) {
stack.push(num);
return true;
}
}
return false;
}
์ ์ฒด ์ฝ๋
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
int N;
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
ArrayList<Integer> numlist = new ArrayList<>();
for(int i=0; i<N; i++){
numlist.add(sc.nextInt());
}
ArrayList<Stack<Integer>> stackList = new ArrayList<>();
for(int i=0; i<4; i++) {
stackList.add(new Stack<>());
stackList.get(i).add(Integer.MIN_VALUE);
}
boolean cleanFlag = true;
for(int num : numlist){
if(!placeInStack(num, stackList)){
cleanFlag = false;
break;
}
}
System.out.println(cleanFlag ? "YES" : "NO");
}
public static boolean placeInStack(int num, ArrayList<Stack<Integer>> stackList){
for(Stack<Integer> stack : stackList){
if(num > stack.peek()) {
stack.push(num);
return true;
}
}
return false;
}
}