본문 바로가기

코딩테스트19

수식 최대화 문제풀이 from itertools import permutations import re import queue import copy def solution(expression): answer = 0 ops = [] q = [] numbers = re.split("[-, +, *]", expression) expression = list(expression) for num in numbers: q.append(int(num)) for op in expression[:]: if op in ['-', '+', '*']: ops.append(op) q.append(expression.pop(0)) break else: expression.pop(0) ops = set(ops) op_lists = list(pe.. 2021. 6. 3.
예상 대진표 문제풀이 def solution(n,a,b): answer = 0 for i in range(0, n): if a % 2 == 1: a += 1 if b % 2 == 1: b += 1 if a == b: answer = i+1 break else: a /= 2 b /= 2 return answer 알고리즘 특별한 알고리즘이 필요한 문제는 아니었다. 이 문제를 해결할 키 포인트는 대전 상대가 자신과 번호가 1 차이 나는 것에 있다. 그리고 이긴 사람의 번호는 자신의 번호에 2를 나눈 몫으로 부여받는다. 홀수인 경우 자신의 번호에 1을 더하여 2로 나누면 된다. 따라서 a, b선수의 번호가 같을 때 이 둘이 서로 경기를 진행한다는 말과 동일하다. 조금 더 설명하자면 나는 선수가 홀수인 경우 1을 먼저 더해주.. 2021. 6. 3.
실패율 def solution(N, stages): answer = [] result = [] for step in range(1, N+1): fail = 0 play = 0 for stage in stages: if stage == step: fail += 1 play += 1 elif stage > step: play+=1 else: pass if play == 0: result.append((step, 0)) else: result.append((step, fail/play)) result.sort(key = lambda x : (-x[1], x[0])) for step in result: answer.append(step[0]) return answer 문제풀이 특별한 알고리즘이 필요하지 않은 문제였다... 2021. 6. 3.
오픈채팅방 문제풀이 def solution(record): answer = [] id_dict = {} systems = [] for log in record: logs = log.split() if logs[0] == "Enter": id_dict[logs[1]] = logs[2] systems.append([logs[1], "님이 들어왔습니다."]) elif logs[0] == "Leave": systems.append([logs[1], "님이 나갔습니다."]) else: id_dict[logs[1]] = logs[2] for system in systems: answer.append(id_dict[system[0]]+system[1]) return answer 알고리즘 특별한 알고리즘이 필요한 문제는 아니다... 2021. 6. 1.