본문 바로가기

전체 글

(61)
[문제풀이] 백준 13335번 트럭 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 1차 시도 total_count = 0 n, w, L = map(int, input().split()) trucks = list(map(int, input().split())) bridge = [0] * w while True: bridge.pop(0) total_count += 1 if len(trucks) > 0: if sum(bridge) + trucks[0]
[문제풀이] 백준 2161번 카드01 1차 시도 import queue q = queue.Queue() trash = [] n = int(input()) for data in range(1, n+1): q.put(data) while q.qsize() != 1: # step-1 trash.append(q.get()) # step-2 q.put(q.get()) trash.append(q.get()) for t in trash: print(t, end=' ') 어려운 문제는 아니었다. Queue에서 enqueue와 dequeue를 잘 이해하고 FIFO를 잘 파악하고 있다면 어렵지 않게 풀수 있는 문제이다.
[문제풀이] Stack - 균형잡힌 세상 1차 시도 while True: input_data = input() if input_data == '.': break input_data = input_data.replace(' ', "") stack = [] for character in input_data: if character == '(' or character == '[': stack.append(character) elif character == ')': if len(stack) != 0: last = stack.pop() if last != '(': print("no") stack = None break else: print("no") stack = None break elif character == ']': if len(stack) !=..
[문제풀이] Stack - 괄호 1차 시도 n = int(input()) for idx in range(n): line = input() stack = [] for character in line: if character == '(': stack.append(character) elif character == ')': if len(stack) != 0: stack.pop() else: print("NO") stack = None break if stack is not None: if len(stack) == 0: print("YES") else: print("NO") 어렵지 않은 문제였다.
[알고리즘] Queue Queue Queue는 stack과 같이 선형 자료구조 중 하나이며 대표적인 자료구조이다. 선형구조는 '자료가 일렬로 존재하는 구조'를 뜻한다. 예를들면 stack, queue, linked list 등이 있다. Queue에서 꼭 알아야할 개념은 FIFO이다. FIFIO는 First in First out이며 '가장 먼저 들어간 값이 가장 먼저 나간다'라는 의미이다. 즉 우리가 일반적으로 비행기 탑승게이트에서 줄을 서게 되면 먼서 줄선 사람이 먼저 비행기에 탑승할 수 있는 것과 동일하다. 그림을 보면 알 수 있듯이 '앞'에 인는 정보가 추출이 되고 삽입되는 정보는 '뒤'에 쌓이는 것을 알 수 있다. 프로그래밍에서 사용될때는 보통 프린터 버퍼나 영상 버퍼와 같은 '버퍼'를 구현할때도 사용하고, 시뮬레이션을..
[알고리즘] Stack Stack Stack은 선형 자료구조이며 가장 기초적이고 중요한 개념이다. 선형 자료구조란 '자료가 일렬로 존재하는 구조'를 의미한다. 예를들면 stack, queue, linked list 등 이다. stack에서 꼭 알아야 할 것은 바로 LIFO이다. LIFO는 Last in First out이며 '가장 마지막에 들어온 값이 가장 먼저 나간다는 뜻'을 가진다. 즉 데이터가 삽입되는 구멍과 삭제되는 구멍이 동일하다고 이해하면 되겠다. 아래 그림을 보면 좀더 쉽게 이해할 수 있다. 간단하게 예를 들면, 상자 안에 책을 눕혀서 국어책-수학책-영어책 순으로 넣는다면 뺄때는 영어책-수학책-국어책 순으로 빼게 될 것이다. 상자를 부시지 않는 이상 국어책을 빼기 전까지는 수학책 영어책을 빼낼 수 없다 (어떻게서든..
[문제풀이] Hash - 카드 1차 시도 n = int(input()) cards = {} for idx in range(n): card = int(input()) if card in cards: cards[card] += 1 else: cards[card] = 0 many = max(list(cards.values())) pick = sorted([key for key, value in cards.items() if value == many]) print(pick[0]) 어렵지 않게 풀만 했음. Hash로 풀수 있는 문제 스타일이 좀 눈에 읽는 중이다.
[문제풀이] Hash - 듣보잡 1차 시도 n, m = map(int, input().split()) d_names = {} for idx in range(n+m): name = input() if name in d_names: d_names[name] += 1 else: d_names[name] = 1 dbj = [key for key, value in d_names.items() if value == 2] dbj.sort() print(len(dbj)) for name in dbj: print(name) 좀 쉬운 문제를 선택했나보다. 어렵지 않았다.