카카오 2019 기출 - 실패율
def solution(N, stages): failRate = [] for i in range(1, N+1): cnt, rate = 0, 0 for j in stages: if j >= i: cnt += 1 if j == i: rate += 1 if cnt: failRate.append([i, rate / cnt]) else: failRate.append([i, 0]) #실패율 내림차순 정렬, 실패율 같으면 스테이지 번호로 오름차순 정렬 failRate = sorted(failRate, key = lambda x : (-x[1], x[0])) return list(map(lambda x : x[0],failRate)) cnt : 현재 스테이지에 도달한 플레이어 수 rate : 현재 스테이지에 머물러 있..
더보기
백준 17836 - 공주 구출 [bfs]
""" 17836 백준 """ from collections import deque H, W, T = map(int, input().split()) arr = [list(map(int, input().split())) for i in range(H)] dirs = [ [0,1], [1,0], [0,-1], [-1,0] ] def bfs(): visited = [[False for i in range(W)] for j in range(H)] visitSword = [[False for i in range(W)] for j in range(H)] q = deque([[0,0,0,0]]) visited[0][0] = True while q: y, x, t, sword = q.popleft() if y == H..
더보기
백준 1987 알파벳 - bfs
""" 백준 1987 알파벳 """ import sys input = sys.stdin.readline R, C = map(int, input().split()) arr = [input() for _ in range(R)] dir = [[0, 1], [0, -1], [1, 0], [-1, 0]] q = set([(0, 0, arr[0][0])]) answer = 1 while q : y, x, v = q.pop() for d in dir: ny = y + d[0] nx = x + d[1] if 0
더보기
블록이동하기(드론 조종) - bfs
def solution(board): H = len(board) W = len(board[0]) moves = [ [0, 1], [0, -1], [1, 0], [-1, 0] ] def bfs(): state = [[[True, True] for _ in range(W)] for __ in range(H)] # 0 가로, 1 세로 q = [[0, 0, 0, 0]] state[0][0][0] = False while q: y, x, curDir, cnt = q.pop(0) if curDir: # 탈출 조건 체크 if x == W - 1 and y + 1 == H - 1: return cnt # 현재 세로라면 이동 or 회전 4가지 # 이동한다면 for move in moves: # 갈 수 있는지 이제부터 확..
더보기