[백준] 1874_스택 수열 - JAVA

2023. 4. 22. 22:11·알고리즘/알고리즘 유형
반응형

백준_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

 

스택(Stack)

삽입과 삭제 연산이 후입선출(LIFO : Last-in First-out)으로 이루어진 자료구조이다. 후입선출은 산입과 삭제가 한 쪽에서만 이루어진다. 

스택 용어

  • top : 삽입과 삭제가 일어나는 위치
  • push : top 위치에 새로운 데이터를 삽입하는 연산
  • pop : top 위치에 현재 있는 데이터를 삭제하고 확인하는 연산
  • peek : top 위치에 현재 있는 데이터를 단순 확인하는 연산

 

스택은 깊이 우선 탐색(DFS : Depth First Search), 백트래킹 종류의 코딩 테스트에 효과적이다.

후입선출은 개념 자체가 재귀 함수 알고리즘 원리와 일맥상통한다.

 

코드

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[] arr = new int[n];

        for(int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }

        Stack<Integer> stack = new Stack<>();
        StringBuilder sb = new StringBuilder();

        int num = 1;

        for(int i = 0; i < n; i++) {
            int su = arr[i];
            if(su >= num) {
                while(su >= num) {
                    stack.push(num++);
                    sb.append("+\n");
                }
                stack.pop();
                sb.append("-\n");
            }
            else {
                int top = stack.pop();
                if(top >  su) {
                    System.out.println("NO");
                    return;
                }
                else {
                    sb.append("-\n");
                }
            }
        }
        System.out.println(sb.toString());
    }
}

스택이란 자료구조를 잘 이해하고, 사용할 줄 안다면 나름 쉽게 풀리는 문제이다..!

 

 

제출 결과

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/알고리즘 유형' 카테고리의 다른 글
  • [백준] 17298_오큰수 - JAVA
  • [백준] 11003_최솟값 찾기 - JAVA
  • [백준] 12891_DNA 비밀번호 - JAVA
  • [백준] 2018_수들의 합5 - JAVA
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JPA
    springboot
    기출문제
    oracle
    알고리즘
    자바스크립트
    에러해결
    프론트엔드
    백준
    react
    전자정부프레임워크
    SQL
    스프링부트
    개발자
    인프런
    egov
    운영체제
    토이프로젝트
    Spring
    RESTful
    QueryDSL
    IT
    Java
    토비의스프링부트
    방통대
    프로그래머스
    넥사크로
    코딩테스트
    MSA
    SpringBoot를 이용한 RESTful Web Service 개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
[백준] 1874_스택 수열 - JAVA
상단으로

티스토리툴바