목록PCCP (5)
나의 개발일지
문제 : https://school.programmers.co.kr/learn/courses/19344/lessons/242259 🔑 BFS 석유가 있으면 현재 좌표를 가지고 BFS를 호출한다. 석유가 있는 덩어리의 크기를 구한다. (cnt) 덩어리의 열 위치를 저장한다. (lst) 저장한 덩어리 열 위치에 덩어리의 크기를 누적 시킨다. (answer) 누적 시킨 리스트의 최댓값이 답 ✨ from collections import deque def solution(land): answer = [0] * len(land[0]) mx, my = [0, 0, 1, -1], [1, -1, 0, 0] visit = [[0] * len(land[0]) for _ in range(len(land))] def bfs(..
문제 : https://school.programmers.co.kr/learn/courses/19344/lessons/242258 🔑 말 그대로 구현하기 1초 단위로 계산을 했다. 공격받는 시간이 되면 attacks리스트에서 빼내고 공격을 받는다. 연속 성공 횟수 초기화 죽으면 -1 리턴 공격받는 시간이 아니라면 회복을 한다. 초당 회복 최대 체력 이상 넘어가지 않게 컨트롤 연속 성공 횟수에 도달하면 추가 회복하고 횟수 초기화 죽지 않고 살아 있다면 남은 HP를 리턴하면 끝 ✨ def solution(bandage, health, attacks): success = 0 # 연속 성공 횟수 time = 1 hp = health while attacks: if time == attacks[0][0]: # 공..
문제 : https://school.programmers.co.kr/learn/courses/15008/lessons/121685 def stack(gen, n): stack = [] while gen>1: stack.append(n%4) n //= 4 gen -= 1 while stack: num = stack.pop() if num == 0: return "RR" if num == 3: return "rr" return "Rr" def solution(queries): answer = [] for gen, n in queries: answer.append(stack(gen, n-1)) return answer
문제 : https://school.programmers.co.kr/learn/courses/15008/lessons/121684 dfs, 재귀 각 종목 별로 대표를 뽑고 능력치 합을 계산해 최댓값을 찾는다. answer = 0 def dfs(d, sum, ability, ck): global answer n = len(ability) # 학생 수 m = len(ability[0]) # 종목 수 if d == m: # 깊이가 최대 종목 수에 도달하면 answer = max(answer, sum) # 더 큰 능력치 합으로 업데이트 return else: # 아니면 for i in range(n): # 학생 수 만큼 반복 if ck[i] == 0: # 종목 대표로 안 나간 학생이면 ck[i] = 1 # 대표..
문제 : https://school.programmers.co.kr/learn/courses/15008/lessons/121683 def solution(input_string): answer = "" chk = [] for i in input_string: if input_string.count(i) >= 2 and i not in chk: # 2개 이상이고 확인 안 한 알파벳 idx = [] # 알파벳 위치 넣을 배열 (알파벳마다 초기화) chk.append(i) # 이미 검사한 알파벳 또 안 하려고 추가 for j in range(len(input_string)): if i == input_string[j]: idx.append(j) # 같은 알파벳 위치 추가 for k in range(len(id..