본문 바로가기

전체 글74

[18405] 경쟁적 전염 bfs문제(queue->deque로 사용)1.바이러스가 1부터 먼저 전염시작2.1이먼저 상하좌우로 0인곳이동 -> 2부터 K번까지의 바이러스도 상하좌우 0인곳 이동3.위과정이 1초의 과정4.S초후에 배열 출력   from collections import dequeimport sysinput = sys.stdin.readlinedi = [-1,0,1,0]dj = [0,1,0,-1]N , K = map(int,input().split())arr = [list(map(int,input().split())) for _ in range(N)]S,X,Y = map(int,input().split())lst = [] # 1부터 전염시작해야하므로 오름차순으로 bfs돌리게 해줄 배열for a in range(N): .. 2024. 1. 14.
[2659] 십자카드 문제 문제이해십자카드4숫자를 시계방향으로 이동해서 4개숫자 중 가장작은숫자가 : 시계수1111~9999 숫자중 (카드에 0숫자는 없음 제외하기)찾은 시계수가 몇번째로 작은지 구하기  #시계수 구하는 함수def findclock(string_num): # 스트링인 숫자를 받아 정수인 시계수를 만드는 함수 clocknumber = 99999 ans = '' for i in range(4): ans = string_num[i:]+string_num[:i] if clocknumber > int(ans): clocknumber = int(ans) return clocknumbercard = list(map(int,input().split())) # 2.. 2024. 1. 13.
[11725] 트리의 부모 찾기 dfs,bfs로 푸는문제1. dfs로 깊이우선탐색해서 자식노드를 stack에 담을때 2.부모노드를 정답 배열이 answer에 자식노드번호인덱스에 담는다 from collections import dequeimport sysinput=sys.stdin.readlinedef dfs(start): stack = deque([start]) # stack = [start] visited[start] = 1 while stack: t = stack.pop() for i in adj[t]: if visited[i] == 0: stack.append(i) visited[i] = 1 .. 2024. 1. 13.
의상 문제이해각 리스트의 맨마지막이 카테고리이름이고,각카테고리의 종류에서는 하나밖에 착용할 수 없다.전부 착용안할 수는 없고 최소 모든 카테고리 포함해서 하나라도 착용해야함   def solution(clothes): ans = 1 hash = {} lst = [] for i in clothes: for j in range(len(i)-1): if i[-1] in hash: hash[i[-1]] += 1 else: hash[i[-1]] = 1 #return hash {'headgear': 2, 'eyewear': 1} # 각 카테고리의 개수를 센다 f.. 2024. 1. 11.