일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정규식
- 그리디
- 정렬
- DateTime
- Zip
- 다익스트라
- 위클리 챌린지
- 파이썬
- Set
- 카카오
- 이분탐색
- dfs
- BFS
- backjoon
- java
- 자바
- programmers
- python
- divmod
- Re
- 재귀함수
- Combinations
- 수학
- KAKAO BLIND RECRUITMENT
- heapq
- 동적 계획법
- 프로그래머스
- lambda
- 백준
- 추석맞이 코딩챌린지
- Today
- Total
목록파이썬 (161)
상상쓰
https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr heapq 를 이용하여 문제에서 말하는 대로 구현하면 된다. 현재 시각 T 를 설정하여 정렬된 jobs 의 가장 작은 시점에 있는 값보다 T 가 크다면 heapq 에 넣고 그렇지 않으면, heapq 에서 job 을 꺼내어 T 와 answer 를 재설정한다. import heapq def solution(jobs): answer = 0 jobs.sort(ke..
https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 주어진 results 배열로 해당 선수보다 순위가 낮은 선수들의 집합과 높은 선수들의 집합을 구하여 순위를 결정할 수 있으면 answer 에 1 씩 더하였다. 예를 들어, 순위 관계가 A < B 라고 가정하자. 문제에서 A < B 라면 results 배열에 [B, A] 가 존재하거나, A=C0 < C1 < C2 < ... < Cn-1 < B=Cn 를 만족하는 [C1, A], [C2, C1], ... , [B, Cn-1] 이 존재한다. 아래의 소스에서 i 에 해당하는 것..
https://www.acmicpc.net/problem/3135 3135번: 라디오 첫 줄엔 정수 A와 B가 주어진다 (1 ≤ A, B < 1000, A ≠ B). 다음 줄엔 정수 N이 주어진다 (1 ≤ N ≤ 5). 다음 N개의 줄엔 미리 지정되어 있는 주파수가 주어진다 (주파수는 1000 보다 작다). www.acmicpc.net 어렵지 않은 문제다. 정수 A 와 미리 지정돼있는 N 개의 주파수 중에서 B 와의 가장 작은 차이를 구하면 된다. 가장 작은 차이가 A 라면 answer 을 0 부터, N 개의 주파수 중 하나라면 answer 을 1 부터 시작하여 계산하여 가장 작은 차이(이제부터는 1 MHZ 씩 이동하는 경우밖에 없으므로) 를 더해주면 된다. N 개의 주파수 중 B 와의 차이가 A 와 B..
https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 처음에는 combinations 를 이용하여 풀었는데 시간 초과가 났다. 다시 보니, 조합을 이용할 필요가 없었다. headgear 가 3가지 종류가 있다면 headgear 를 안 쓰는 조건까지 추가하여 4가지로 계산한다. 최소한 한 개 이상의 의상은 입으므로 최종적으로 계산된 answer 에서 아무것도 안 입는 경우인 1을 빼주면 된다. from collections import defaultdict def solution(clothes): answer = 1 dic = defaultdict(int) for i in clothes: dic[i[1..
https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr stack 의 LIFO (후입선출) 을 이용하여 차례로 해결해가면 된다. def solution(s): answer = -1 stack = [] for i in s: stack.append(i) while len(stack) >= 2: if stack[-1] == stack[-2]: stack.pop() stack.pop() else: break a..
https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr DFS 알고리즘을 구현하여 가장 하위에 있는 판매원부터 추천인한테 이득을 분배하고 계산된 값을 가지고 더 상위의 추천인한테 이득을 분배하면 된다. 예를 들어 center - S - A (a원), B (b원) 로 나타냈을 때 S 는 (a // 10 + b // 10) 이다. 여기서 center 는 ((a // 10) // 10 + (b // 10) // 10..
https://programmers.co.kr/learn/courses/30/lessons/42893 코딩테스트 연습 - 매칭 점수 매칭 점수 프렌즈 대학교 조교였던 제이지는 허드렛일만 시키는 네오 학과장님의 마수에서 벗어나, 카카오에 입사하게 되었다. 평소에 관심있어하던 검색에 마침 결원이 발생하여, 검색개발팀 programmers.co.kr 정규식을 어느 정도 다룰 줄 알면 크게 어려운 문제는 아니었다. 1. word 와 page 를 소문자로 통일시킨 뒤 page 에서 조건에 맞는 word 를 찾는다. 2. 웹페이지의 url 과 외부링크를 찾는다. 3. dic 을 이용하여 각 url 의 점수를 계산한 값을 넣어준다. 외부링크에는 있으나 page 의 url 이 아닌 경우와 index 를 구분하기 위해 ..
https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 정렬을 이용하여 테이프를 붙이는 위치를 계속 변경하면서 최소 횟수를 구하는 문제로 쉽다. import sys N, L = map(int, sys.stdin.readline().split()) pipe = list(map(int, sys.stdin.readline().split())) pipe.sort() answer = 1 value = pipe[0] for i in range(1..
https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 이 문제의 알고리즘 분류가 정렬 또는 우선순위 큐가 있어서 heapq 와 sort() 로 오름차순으로 정렬하였다. 작은 가방에 들어갈 수 있는 보석은 큰 가방에 당연히 들어가기 때문이다. 오름차순으로 가방에 넣을 수 있는 보석의 가격을 price 에 놓고 heapq 와 '-' 부호를 이용하여 절댓값이 가장 큰 가격을 answer 에 더한..
https://programmers.co.kr/learn/courses/30/lessons/70130 코딩테스트 연습 - 스타 수열 programmers.co.kr 교집합이 될 수 있는 원소의 index 를 가지고 스타 수열의 길이를 구한다. 스타 수열의 최대 길이를 구하려고 한다면 우선 교집합의 원소가 오른쪽에 오는 것을 우선으로 한다. 또한, 스타 수열의 항에서 교집합의 원소랑 아닌 원소랑은 가장 근접한 것을 우선으로 한다. 조건에 맞는 항을 구한 후, 항의 각 원소가 다르면 스타 수열의 길이가 2씩 늘어난다. from collections import defaultdict def solution(a): answer = 0 dic = defaultdict(list) N = len(a) for i in..