코딩테스트 5

[Python] 길 찾기 게임

1. 문제 2. 풀이 과정 방법 1) 배열로 tree를 구성한 후, 순회 import sys sys.setrecursionlimit(10**6) class Node(object): def __init__(self, i, data_set): self.left_idx = -1 self.idx = i self.right_idx = -1 self.num = data_set[0] self.x = data_set[1] self.y = data_set[2] def pre_order(t, i, result): if i == -1: return result.append(t[i].num) pre_order(t, t[i].left_idx, result)#왼 pre_order(t, t[i].right_idx, result)#..

[Python] 후보키

1. 문제 2. 풀이 과정 from itertools import combinations def solution(relation): row = len(relation) col = len(relation[0]) answer = set() for i in range(1, col+1): for com in combinations(range(col), i): #속성들의 조합 #최소성 검사 minimality = True for a_tup in answer: if set(a_tup) & set(com) == set(a_tup): minimality = False break #최소성을 만족, 유일성 검사 if minimality: temp = set() for k in range(row): temp.add(tupl..

[Python] 실패율

1. 문제 2. 풀이 과정 def solution(N, stages): rate = [0]*(N+2) total = len(stages) #도전자 수 for stage in stages: rate[stage] += 1 result = [] for i, r in enumerate(rate[1:N+1], start = 1): if total == 0: result.append((0, i)) continue temp = rate[i]/total #실패율 total -= rate[i] #스테이지에 도달한 플레이어 수 result.append((temp, i)) return list(map(lambda x:x[1], sorted(result, key = lambda x:x[0], reverse = True)))

[Python] 오픈채팅방

1. 문제 2. 풀이 과정 def solution(record): user = {} result = [] for r in record: order = r.split() if order[0] == "Enter": user[order[1]] = order[2] result.append((order[1], "님이 들어왔습니다.")) elif order[0] == "Leave": result.append((order[1], "님이 나갔습니다.")) elif order[0] == "Change": user[order[1]] = order[2] answer = [] for uid, command in result: temp = user[uid]+command answer.append(temp) return answer