목록자료구조 (42)
기록방
👉 문제링크 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net 🔸 문제 분석 🔸 보는 방향에서 봤을때 보이는 블럭의 수를 출력한다. 스택을 사용해서 가려지는 블록을 제거하면 되는 문제이다. 🔸 코드 🔸 import sys input = sys.stdin.readline N = int(input()) arr = [0] for i in range(N): h = int(input()) while True: if len(arr) == 0: arr.append(h) break elif arr[-1]
👉 문제링크 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 🔸 문제 분석 🔸 큐를 구현하는 문제이다. 🔸 코드 🔸 import sys from collections import deque input = sys.stdin.readline print = sys.stdout.write N = int(input().strip()) q = deque() for i in range(N): order = input().strip() if order[:4] == "push": q.append(order[5:..
👉 문제링크 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 🔸 문제 분석 🔸 값 목록을 입력받고, 입력 받은 값이 몇 번 호출됐는지 출력한다. 목록으로 입력받지 않은 것들은 0으로 출력한다. 🔸 코드 🔸 import sys input = sys.stdin.readline print = sys.stdout.write dic = {} int(input().strip()) arr = input().strip().split() for i in arr: if i in dic: dic[..
👉 문제링크 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 🔸 문제 분석 🔸 숫자를 입력받다가 0이 입력되면 최근 값을 제외한다. 입력받은 숫자의 총 합을 출력한다. 🔸 코드 🔸 import sys from collections import deque input = sys.stdin.readline K = int(input().strip()) d = deque() for i in range(K): n = int(input().strip()) if n == 0: d.pop() ..
👉 문제링크 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 🔸 문제 분석 🔸 문자열을 처리와 스택 활용이 합쳐져있는 문제이다. 🔸 코드 🔸 import sys input = sys.stdin.readline while(True): ss = input().rstrip() if ss == ".": break stack = [] check = False for c in ss: if c == '(' or c == '[': stack.append(c) elif c == ')': if len(st..