Programmers / 2단계 / 방금그곡 / python / 2018 KAKAO BLIND RECRUITMENT
·
Coding Test/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/17683 코드def solution(m, musicinfos): m = m.replace('C#','c').replace('D#','d').replace('F#','f').replace('G#','g').replace('A#','a') answer = [] for music in musicinfos: s = int(music.split(',')[0].split(':')[0]) * 60 + int(music.split(',')[0].split(':')[1]) e = int(music.split(',')[1].split(':')[0]) * 60 + int(musi..
Programmers / 3단계 / 보석 쇼핑 / python
·
Coding Test/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/67258  코드def solution(gems): size = len(set(gems)) dic = {gems[0]:1} temp = [0, len(gems) - 1] start , end = 0, 0 while(start  모든 종류의 보석을 1개 이상 포함하는 가장 짧은 구간을 구해야 하는 문제이다. 시간 복잡도를 고려해 슬라이싱 대신 투포인터와 딕셔너리를 이용하여 풀어야 한다. 처음에 포인터 start와 end를 모두 1번 진열대에 위치시키고, 보석의 종류가 모두 채워질 때까지 end를 증가시키면서 딕셔너리의 키와 값을 갱신한다. 종류가 모두 채워지면 가장 짧은 구간인..
Programmers / 2단계 / 여행 경로 / python
·
Coding Test/Programmers
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
·
Coding Test/Programmers
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
·
Coding Test/Programmers
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
·
Coding Test/Programmers
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
·
Coding Test/Programmers
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
·
Coding Test/Programmers
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 -..