Programmers / 2단계 / 여행 경로 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/43164  코드import collectionsdef solution(tickets): graph = collections.defaultdict(list) for a, b in sorted(tickets, key=lambda x: x[1]): graph[a].append(b) route = [] def DFS(start): while graph[start]: DFS(graph[start].pop(0)) route.append(start) DFS("ICN") return rou..
Programmers / 2단계 / 줄 서는 방법 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/12936  코드import math def solution(n, k): arr = list(range(1, n + 1)) answer = [] while arr: a = (k - 1) // math.factorial(n - 1) answer.append(arr.pop(a)) k = k % math.factorial(n - 1) n -= 1 return answer 처음에 순열을 사용하여 접근하려고 했으나 통과하지 못하여서 다른 풀이를 참고하였다.수학적으로 팩토리얼을 이용해 접근할 수 있었다. 참조h..
Programmers / 2단계 / 미로 탈출 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/159993  코드from collections import dequedef bfs(start, end, maps): dy = [0, 1, -1, 0] dx = [1, 0, 0, -1] n = len(maps) m = len(maps[0]) visited = [[False] * m for _ in range(n)] q = deque() for i in range(n): for j in range(m): if maps[i][j] == start: q.append((..
Programmers / 3단계 / 호텔 대실 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/155651 코드from heapq import heappop, heappushdef solution(book_time): answer = 1 for i in range(len(book_time)): book_time[i][0] = int(book_time[i][0].split(':')[0])*60 + int(book_time[i][0].split(':')[1]) book_time[i][1] = int(book_time[i][1].split(':')[0])*60 + int(book_time[i][1].split(':')[1]) +10 book_time.s..
Programmers / 2단계 / 시소 짝꿍 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/152996 코드from collections import Counterdef solution(weights): answer = 0 times = (3/4, 2/3, 1/2) count_dict = Counter(weights) for key, value in count_dict.items(): if value > 1: answer += value * (value - 1) / 2 # weights 안에 중복 없애기 weights = list(set(weights)) # 같은 무게가 아닐 경우 for i in we..
Programmers / 3단계 / 마법의 엘리베이터 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/148653  코드def solution(storey): answer = 0 while storey > 0: len_storey = len(str(storey)) num1 = abs(storey - 10 ** len_storey) num2 = abs(storey - 10 ** (len_storey - 1)) storey = min(num1, num2) answer += 1 return answer 현재 층의 자리수 단위로 이동한다. 만약 16인 경우 두 자리 수이므로 10 ** 2 = 100 또는 10 ** (2 -..
Programmers / 2단계 / 괄호 변환 / python / 2020 KAKAO BLIND RECRUITMENT
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/60058  코드def check(s): stack = [] for i in s: if i == '(': stack.append(i) else: if len(stack) == 0: return False stack.pop() return Truedef divide(s): left, right = 0,0 for i in range(len(s)): if s[i] == '(': left += 1 else: r..
Programmers / 3단계 / 스티커 모으기(2) / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/12971  나의 풀이 (테스트 실패)def solution(sticker): num1 = 0 num2 = 0 maxN = 0 if len(sticker) == 1: return "".join(sticker) if len(sticker) % 2 == 1: for i in range(0, len(sticker)-1, 2): num1 += sticker[i] else: for i in range(0, len(sticker), 2): num1 += sticker[i] for ..