jujuwon
시크릿주주
jujuwon
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • 🔠 프로그래밍언어 (35)
      • ☕️ Java (19)
      • 🐠 Python (15)
      • 🍠 Kotlin (1)
    • 🔙 Backend (16)
      • 🌿 Springboot (12)
      • 🐳 Docker (1)
      • ☁️ AWS (3)
    • 💼 CS (12)
      • 📶 Network (12)
    • 🕹 알고리즘 (14)
      • 📑 스터디 (2)
      • 💁🏻‍♂️ 백준 (9)
      • 👨🏼‍🔬 프로그래머스 (3)
    • 📚 Book (8)
      • 🔎 오브젝트 (4)
      • 🧪 TDD (2)
      • 📜 논문 (2)
    • 🔐 보안 (7)
      • 👾 Pwnable (7)
    • 📝 회고 (4)
    • 🧩 etc. (10)
      • ⚠️ issue (2)
      • 💡 꿀팁 (7)
      • ✏️ 끄적 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

hELLO · Designed By 정상우.
jujuwon
🕹 알고리즘/💁🏻‍♂️ 백준

백준 :: 2493번 탑 (Python)

백준 :: 2493번 탑 (Python)
🕹 알고리즘/💁🏻‍♂️ 백준

백준 :: 2493번 탑 (Python)

2023. 6. 5. 01:11
반응형

문제 링크

https://www.acmicpc.net/problem/2493

 

2493번: 탑

첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1

www.acmicpc.net

접근 방식

문제를 보고 현재 탑보다 이전(왼쪽)에 있는 탑들 중 일단 거리가 가깝고, 현재 탑보다 높이가 크거나 같은 탑이 몇번 인덱스인지 확인하면 되겠다는 생각이 들었다.

예를 들어 예시 입력인 6 9 5 7 4 에서 높이가 5인 탑은 높이가 6인 탑이 있든 없든 상관이 없다.

그래서 스택으로 탑들을 쌓아나가면서 높이를 비교해나가기로 생각했다.

  1. 스택이 비면 0 출력
  2. 수신할 수 있는 탑을 찾을 때까지 스택 탐색
    • 현재 탑보다 작은 탑은 pop (뒤 탑들 입장에선 현재 탑보다 작은 앞쪽 탑은 필요없다)
    • 수신할 수 있는 탑을 찾으면 해당 탑의 인덱스 출력
  3. 현재 탑을 스택에 push

풀이 코드

import sys

def input():
    return sys.stdin.readline()

N = int(input())
towers = list(map(int, input().split()))

stack = []
answer = []

'''
스택이 비면 0
수신탑 찾을 때까지 peek.
    나보다 작은 값은 뒤 탑들에겐 필요없으므로 pop
    수신탑 찾으면 해당탑의 idx + 1 출력
나 push
'''
for idx, tower in enumerate(towers):
    while stack:
        if stack[-1][0] < tower:
            stack.pop()
        else:
            answer.append(str(stack[-1][1]))
            break
    else:
        answer.append(str(0))
    stack.append((tower, idx+1))

print(' '.join(answer))

끝.

728x90
반응형
저작자표시 (새창열림)
  • 문제 링크
  • 접근 방식
  • 풀이 코드
'🕹 알고리즘/💁🏻‍♂️ 백준' 카테고리의 다른 글
  • 백준 :: 1043번 거짓말 (Python)
  • 백준 :: 7570번 줄 세우기 (Python)
  • 백준 :: 1213번 팰린드롬 만들기 (Python)
  • 백준 :: 1254번 팰린드롬 만들기 (Python)
jujuwon
jujuwon

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.