일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 정렬
- KAKAO BLIND RECRUITMENT
- 다익스트라
- java
- Zip
- 정규식
- 위클리 챌린지
- 이분탐색
- programmers
- Combinations
- 수학
- python
- 추석맞이 코딩챌린지
- Re
- 파이썬
- Set
- lambda
- 동적 계획법
- DateTime
- 카카오
- dfs
- BFS
- divmod
- 백준
- 자바
- 프로그래머스
- backjoon
- 그리디
- 재귀함수
- heapq
- Today
- Total
목록파이썬 (161)
상상쓰
https://programmers.co.kr/learn/courses/30/lessons/42891?language=python3 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr 옛날에 java 로 풀었던 문제를 python 으로 풀어봤다. 1. heapq 를 이용하여 queue 에서 가장 작은 원소를 내보내면서 k 를 줄인다. 이 과정을 반복하여 queue 에서 남은 원소 중 가장 작은 것을 제거할 때 줄어든 k 보다 크다면 while 문을 종료시킨다. 2. 이때 남은 k 는 0 보다 같거나 큰 수로 현재 남은 queue 의 길이 (정확히는 len(queue) + 1) 만큼 나눈 나머지는 food_time[0] 을 기준으로 한 바퀴를 돌기 전까지의 남는 시간이다. 차례대로 fo..
https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 다익스트라 알고리즘을 이용하여 1 에서 출발하여 각 도착하는 번호에 대한 최단 시간을 구하면 된다. 1 에서 출발하여 도작하는 번호의 시간을 계속 비교하면서 더 적은 시간을 distances 에 넣어주면 된다. distances[b] 가 0 인 것은 c 가 1 이상이므로 처음 지나는 경로라는 뜻으로 b 를 queue 에 값을 넣어준다. ..
https://programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 거쳤던 길을 제거하기 위해서 set 에 담는다. 가는 길과 돌아오는 길을 set 에 넣어줘야 하기 때문에 return 값은 set 의 길이를 2 로 나눠주면 된다. def solution(dirs): answer = 0 route = set() x, y, x_, y_= 0, 0, 0, 0 for i in dirs: if i == 'U': x_, y_ = x, y + 1 if i == 'D': x_, y_ = x, y - 1 if i == 'R': x_, y_ = x + 1, y if i == 'L': x_, y_ = x - 1, y if ab..
https://programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 누적합 또는 부분합을 이용하여 미리 계산된 배열을 가지고 시청자 누적 재생 시간이 가장 긴 구간을 찾는다. 경계선 이외에도 답이 될 수 있기 때문에 초마다 비교를 해주어야 했다. '99:59:59' 를 초로 바꾸면 359999초 이다. def solution(play_time, adv_tim..
https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 문제 분류가 이분 탐색으로 되어있어서 그것에 맞게 풀었다. 일어날 수 있는 최솟값인 times[0] 과 최댓값인 times[0] * n 을 가지고 이분 탐색하여 적절한 값을 찾았다. mid 를 정해서 일어날 수 있는 시간이면 -1, 일어날 수 없는 시간이면 +1 을 해서 일어날 수 있는 동시에 가장 최소인 값을 구할 수 있다. def solution(n, time..
https://programmers.co.kr/learn/courses/30/lessons/76503 코딩테스트 연습 - 모두 0으로 만들기 각 점에 가중치가 부여된 트리가 주어집니다. 당신은 다음 연산을 통하여, 이 트리의 모든 점들의 가중치를 0으로 만들고자 합니다. 임의의 연결된 두 점을 골라서 한쪽은 1 증가시키고, 다른 한 programmers.co.kr 문제를 이해하는 것부터 어려웠다. 1. sum(a) 가 0 이 아니라면 모든 가중치를 0 으로 만들 수 없으므로 -1 을 반환하면 된다. 반대로 0 이면 모든 점에서 루트 노드로의 이동이 가능하므로 0 을 만들 수 있다. 2. 트리구조에서 임의의 점이 루트 노드가 될 수 있으며 리프 노드부터 루트 노드로의 한 방향으로 모든 가중치를 0 으로 만..
https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 하루에 한 문제 이상 풀기로 했는데 오늘 일이 많았다. 시간이 없어서 쉬운 문제를 풀었다. 약수의 개수가 홀수인 경우는 완전제곱수일 때뿐이다. def solution(left, right): answer = 0 for i in range(left, right+1): if i == int(i ** 0.5) ** ..
https://programmers.co.kr/learn/courses/30/lessons/77885 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr 쉽다. 짝수일 때 이진수는 0 으로 끝나기 때문에 + 1 을 해주면 된다. 홀수일 때는 2가지 경우의 수를 두어 잘 풀면 된다. 파이썬에 내장된 함수를 통하여 쉽게 진수 변환을 할 수 있다. def solution(numbers): answer = [] for i in numbers: if i % 2 == 0: answer.append(i + 1) else: b = bin(i)[2:] b = list(b) for j in range(len(b)-1, -1, -1): if b[j] == '0': b[j] = '1' b[j+1] = ..
https://programmers.co.kr/learn/courses/30/lessons/72412
https://programmers.co.kr/learn/courses/30/lessons/77886 코딩테스트 연습 - 110 옮기기 0과 1로 이루어진 어떤 문자열 x에 대해서, 당신은 다음과 같은 행동을 통해 x를 최대한 사전 순으로 앞에 오도록 만들고자 합니다. x에 있는 "110"을 뽑아서, 임의의 위치에 다시 삽입합니다. 예를 programmers.co.kr 시간초과 또는 예외사항으로 시간이 조금 걸렸다. 아이디어는 '110' 을 한 번에 다 뽑은 후, 재배열하는 것이다. 우선 먼저 뽑은 '110' 은 사전 순이므로 '11' 앞으로 위치하거나, '0' 뒤로 위치하기 때문에 다음에 만들어지는 '110' 에 영향을 주지 않는다. 그렇기 때문에 이 방법이 가능하다. '110' 을 다 뽑은 배열을 a..