[백준] 1874번 스택 수열 - Stack / push() / pop() / 스택의 원리

2023. 8. 16. 14:02·Java
문제

 

로직

수열의 길이 입력 받기 N

수열을 담을 배열 선언 & 크기 설정

 

1. 반복문

- 배열에 수열 입력 받기

 

스택 선언

결과 판별할 부울 변수 선언 및 초기화

오름차순 자연수 변수 선언 및 초기화

StringBuffer 선언(출력할 값)

 

2. 반복문

- 수열의 값이 오름차순 자연수 값보다 크거나 같을 때

   같을 때까지 반복

     -> 스택에 push, + 값 저장

   클 때

     -> 스택 pop(), - 값 저장

- 수열의 값이 오름차순 자연수 값보다 작을 때

   스택 pop()

    pop한 값이 배열의 값보다 클 때

     -> 불가능 -> NO출력, 결과값 false, 프로그램 종료

    pop한 값이 배열의 값보다 작을 때

     -> - 값 저장

 

 

My Code
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[] numArray = new int[N];

for (int b = 0; b < N; b++){
numArray[b] = sc.nextInt();
}
Stack<Integer> stack = new Stack<>();
boolean result = true;
int num = 1;
StringBuffer bf = new StringBuffer();

for (int i = 0; i < numArray.length; i++)
{
int su = numArray[i];
if (su >= num)
{
while (su >= num) {
stack.push(num++);
bf.append("+\n");
}
stack.pop();
bf.append("-\n");}
else {
int n = stack.pop();
if (n > su){ System.out.println("NO"); result = false; break;}
else bf.append("-\n");
}
}
if (result) System.out.println(bf.toString());
}
}

 

 

문제의 핵심 & 알게된 점

스택을 이용하는 문제이다보니 스택에 대한 기본 지식이 중요했다.

+, -값을 String문자열로 저장하려고 하니 append를 어떻게 할지 고민이었는데

StringBuffer을 이용해서 메서드를 부르니 편리하게 이용할 수 있었다.

 

 

참고 강의_인프런의 Do it! 알고리즘 코딩테스트 with JAVA

저작자표시 (새창열림)

'Java' 카테고리의 다른 글

[백준] 11286번 절댓값 힙 - 우선순위 큐 / 오름차순 정렬 / 반환 값 변화 / 절댓값  (0) 2023.08.19
[백준] 2164번 카드2 - 큐(Queue)/선입선출/스택을 이용한 방법/  (0) 2023.08.18
[백준] 12891번 DNA 비밀번호 - 슬라이딩 윈도우 / switch / 함수  (0) 2023.08.12
[백준] 1940번 주몽 - 투포인터 / 시간 제한 맞추기 / 배열 정렬 / BufferReader  (0) 2023.08.12
[백준] 2018번 수들의 합5 - 투포인터 / 배열 / if문 / while문  (0) 2023.08.11
'Java' 카테고리의 다른 글
  • [백준] 11286번 절댓값 힙 - 우선순위 큐 / 오름차순 정렬 / 반환 값 변화 / 절댓값
  • [백준] 2164번 카드2 - 큐(Queue)/선입선출/스택을 이용한 방법/
  • [백준] 12891번 DNA 비밀번호 - 슬라이딩 윈도우 / switch / 함수
  • [백준] 1940번 주몽 - 투포인터 / 시간 제한 맞추기 / 배열 정렬 / BufferReader
미우딩
미우딩
다양한 프로그래밍 언어를 공부하고 있는 공대생입니다! Python, Java, C언어를 주로 공부하고 있으며 Figma를 통한 디자인도 종종 올릴 예정입니다.
  • 미우딩
    미우의 코딩 기록
    미우딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • Java (47)
      • C언어 (0)
      • 대외활동 (5)
      • Spring (4)
      • 프로젝트 (2)
      • 앱개발 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IT #코딩테스트 #이진탐색 #알고리즘
    IT #알고리즘 #코딩테스트 #우선순위큐 #힙 #절댓값 #오름차순 #정렬
    IT #알고리즘 #그리디알고리즘 #탐욕알고리즘 #코테
    BufferedReader
    IT #백준 #알고리즘 #코딩테스트 #배열 #형변환 #아스키코드
    IT #큐 #알고리즘 #코딩테스트 #자바 #선입선출
    IT #알고리즘 #코딩테스트 #퀵정렬 #오름차순정렬
    IT #코딩테스트 #알고리즘 #스택 #
    IT #알고리즘 #코딩테스트 #DFS
    IT #코딩테스트 #알고리즘 #투포인터 #시간제한 #Scanner #BufferedReader #StringTokenizer
    push #pop #StringBuffer
    IT #알고리즘 #코딩테스트 #선택정렬 #내림차순정렬 #최댓값
    Spring #정적컨텐츠 #MVC #템플릿엔진 #API #애너테이션
    android #java #kotlin #상태관리
    IT #코딩테스트 #알고리즘 #백준 #투포인터 #배열
    IT #BFS #코딩테스트 #구현 #큐 #재귀함수
    IT #알고리즘 #코딩테스트 #삽입정렬 #오름차순정렬
    android #java #kotlin #compose
    IT #백준 #코딩테스트 #알고리즘 #구간합 #반복문
    java #android #개발자
    IT #코딩테스트 #알고리즘 #DFS #재귀함수 #무방향그래프
    IT #코딩테스트 #알고리즘 #버블정렬 #오름차순
    IT #백준 #알고리즘 #코딩테스트 #배열 #형변환 #평균구하기
    IT #코딩테스트 #알고리즘 #슬라이딩윈도우 #투포인터 #함수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미우딩
[백준] 1874번 스택 수열 - Stack / push() / pop() / 스택의 원리
상단으로

티스토리툴바