Algorithm & 자료구조/백준
[JAVA] 백준 25556번 포스텍
불타는고굼이
2023. 10. 16. 14:08
반응형
문제링크
https://www.acmicpc.net/problem/25556
25556번: 포스택
포닉스가 순열을 청소할 수 있으면 YES, 불가능하다면 NO를 출력한다.
www.acmicpc.net
위 문제는 stack을 이용해서 푸는 골드4 단계 문제이다
아래 stack 참조
2023.10.16 - [Language/Java] - Stack
Stack
Stack 이란 ? 스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 사전적 정의는 '쌓다' 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 구조로 그 접근 방법은 언제나 목록의 끝에서만 일어난다.
burning-go9me.tistory.com
내 풀이
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int sizeOfStack = 4;
List<Integer> nums = new ArrayList<Integer>();
for (int i = 0; i < N; i++) {
nums.add(Integer.parseInt(sc.next()));
}
List<Stack<Integer>> stacks = new ArrayList<>();
// 스텍 초기화
for ( int i = 0 ; i < sizeOfStack; i ++ ) {
stacks.add(new Stack<>());
stacks.get(i).push(0);
}
String result = getResult(N, nums, sizeOfStack, stacks);
System.out.println(result);
}
private static String getResult(int N, List<Integer> nums, int sizeOfStack, List<Stack<Integer>> stacks) {
String result = "YES";
int num;
for ( int i = 0 ; i < N ; i ++ ) {
num = nums.get(i);
for ( int j = 0 ; j< sizeOfStack ; j ++ ) {
if ( stacks.get(j).peek() < num){
stacks.get(j).push(num);
num = 0;
break;
}
}
if ( num != 0 ){
result = "NO";
}
}
return result;
}
}
728x90
반응형