https://www.acmicpc.net/problem/1874 // 문제링크
1874번: 스택 수열
1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.
www.acmicpc.net
개발환경은 eclipse 사용했습니다.
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
Stack<Integer> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
int t = sc.nextInt();
int j=1;
boolean error = true;
for(int i=0;i<t;i++)
{
int n = sc.nextInt();
for(;j<=n;j++)
{
stack.push(j);
sb.append("+"+'\n');
}
if(stack.peek() == n)
{
stack.pop();
sb.append("-"+'\n');
}
else
{
error = false;
break;
}
}
if(error)
{
System.out.println(sb);
}
else
{
System.out.print("NO");
}
sc.close();
}
}
처음 문제를 봤을 때 문제이해를 잘 못해서 고민을 많이 했다....
pop()으로 나온 순서대로 수열이 완성되는 건데 "스택에 저장된 걸 출력해야지"라고 생각했고
문제에서 "스택에 push 하는 순서는 반드시 오름차순을 지키도록 한다고 하자" 이 문구에 꽂혀서 생각했던 답이 예제 1번 답과 달라서 당황했다.
결국 검색해 보고 다른 분의 코드를 보고 나서 문제를 이해했다
StringBuilder 쓰는 게 익숙지가 않아서 버벅거린 것 같다.
'백준' 카테고리의 다른 글
백준 [1021번]: 회전하는 큐 ( Java ) (0) | 2023.02.14 |
---|---|
백준 [10866]번: 덱 ( Java ) (0) | 2023.02.13 |
백준 [11866]번: 요세푸스 문제 0 ( Java ) (0) | 2023.02.13 |
백준 [2164]번: 카드2 ( Java ) (0) | 2023.02.12 |
백준 [18258]번: 큐 2 ( Java ) (0) | 2023.02.12 |