728x90

분류 전체보기 149

DFS와 BFS

DFS(깊이 우선 탐색) - 탐색하는 원소를 따라 깊이 탐색하는 것입니다. 스택, 재귀로 구현할 수 있습니다. DFS 구현 코드입니다. graph = { 1: [2, 3, 4], 2: [5], 3: [5], 4: [], 5: [6, 7], 6: [], 7: [3], } def dfs_recursive(node, visited): # 방문처리 visited.append(node) # 인접 노드 방문 for adj in graph[node]: if adj not in visited: dfs_recursive(adj, visited) return visited def dfs_stack(start): visited = [] # 방문할 순서를 담아두는 용도 stack = [start] # 방문할 노드가 남아있는 ..

백준 - 15903 카드 합체 놀이

문제 석환이는 아기다. 아기 석환이는 자연수가 쓰여져있는 카드를 갖고 다양한 놀이를 하며 노는 것을 좋아한다. 오늘 아기 석환이는 무슨 놀이를 하고 있을까? 바로 카드 합체 놀이이다! 아기 석환이는 자연수가 쓰여진 카드를 n장 갖고 있다. 처음에 i번 카드엔 ai가 쓰여있다. 카드 합체 놀이는 이 카드들을 합체하며 노는 놀이이다. 카드 합체는 다음과 같은 과정으로 이루어진다. x번 카드와 y번 카드를 골라 그 두 장에 쓰여진 수를 더한 값을 계산한다. (x ≠ y) 계산한 값을 x번 카드와 y번 카드 두 장 모두에 덮어 쓴다. 이 카드 합체를 총 m번 하면 놀이가 끝난다. m번의 합체를 모두 끝낸 뒤, n장의 카드에 쓰여있는 수를 모두 더한 값이 이 놀이의 점수가 된다. 이 점수를 가장 작게 만드는 것이..

카테고리 없음 2024.01.09

백준 2002 추월

문제 대한민국을 비롯한 대부분의 나라에서는 터널 내에서의 차선 변경을 법률로 금하고 있다. 조금만 관찰력이 있는 학생이라면 터널 내부에서는 차선이 파선이 아닌 실선으로 되어 있다는 것을 알고 있을 것이다. 이는 차선을 변경할 수 없음을 말하는 것이고, 따라서 터널 내부에서의 추월은 불가능하다. 소문난 명콤비 경찰 대근이와 영식이가 추월하는 차량을 잡기 위해 한 터널에 투입되었다. 대근이는 터널의 입구에, 영식이는 터널의 출구에 각각 잠복하고, 대근이는 차가 터널에 들어가는 순서대로, 영식이는 차가 터널에서 나오는 순서대로 각각 차량 번호를 적어 두었다. N개의 차량이 지나간 후, 대근이와 영식이는 자신들이 적어 둔 차량 번호의 목록을 보고, 터널 내부에서 반드시 추월을 했을 것으로 여겨지는 차들이 몇 대..

1주차 스터디

1. 스택 - 삽입 삭제가 후입선출(LIFO)하는 자료구조, 삽입 삭제가 한쪽에서 이루어짐 스택 구현 class Node: def __init__(self, item, next): self.item = item self.next = next class Stack: def __init__(self): self.top = None def push(self, value): self.top = Node(value, self.top) def pop(self): if self.top is None: return None node = self.top self.top = self.top.next return node.item def is_empty(self): return self.top is None 2. 큐 - 삽..

[Day2] 평균 구하기

문제: https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 풀이 n = input() scores = list(map(int, input().split())) m = max(scores) sums = sum(scores) print(sums*100/m/int(n))

코드업 100제 - 6071 ~ 6080

https://codeup.kr/problemsetsol.php?psid=33 문제집 / Python 기초 100제 codeup.kr 6071번 [기초-반복실행구조] 0 입력될 때까지 무한 출력하기 while True: a = int(input()) if a == 0 : break else : print(a) 6072번 [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기1 a = int(input()) for i in range(a, 0,-1): print(i) 6073번 [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기2 a = int(input()) while True: if a == 0: break else: a -=1 print(a) 6074번 [기초-반복실행구조] 문자 1개 ..

코드업 100제 - 6061 ~ 6070

https://codeup.kr/problemsetsol.php?psid=33 문제집 / Python 기초 100제 codeup.kr 6061번 [기초-비트단위논리연산] 비트단위로 OR하여 출력하기 a, b = map(int, input().split()) print(a|b) 6062번 [기초-비트단위논리연산] 비트단위로 XOR하여 출력하기 a,b = map(int, input().split()) print(a^b) 6063번 [기초-3항연산] 정수 2개 입력받아 큰 값 출력하기 a,b = map(int, input().split()) c = a if a >b else b print(c) 6064번 [기초-3항연산] 정수 3개 입력받아 가장 작은 값 출력하기 a, b, c = map(int, input(..

코드업 100제 - 6051 ~ 6060

https://codeup.kr/problemsetsol.php?psid=33 문제집 / Python 기초 100제 codeup.kr 6051번 [기초-비교연산] 정수 2개 입력받아 비교하기4 a, b = map(int, input().split()) if a != b : print("True") else : print("False") 6052번 [기초-논리연산] 정수 입력받아 참 거짓 평가하기 a = int(input()) print(bool(a)) 6053번 [기초-논리연산] 참 거짓 바꾸기 a = bool(int(input())) if a : print("False") else: print("True") 6054번 [기초-논리연산] 둘 다 참일 경우만 참 출력하기 a, b = map(int, inp..

728x90