일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Zip
- 추석맞이 코딩챌린지
- 위클리 챌린지
- Set
- 자바
- BFS
- 다익스트라
- KAKAO BLIND RECRUITMENT
- 파이썬
- backjoon
- 프로그래머스
- 이분탐색
- divmod
- lambda
- 카카오
- programmers
- DateTime
- Combinations
- 정규식
- 동적 계획법
- 정렬
- python
- 수학
- dfs
- java
- heapq
- 그리디
- 백준
- Re
- 재귀함수
- Today
- Total
목록분류 전체보기 (202)
상상쓰
https://www.acmicpc.net/problem/18238 18238번: ZOAC 2 2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해 www.acmicpc.net string.ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' import sys, string S = sys.stdin.readline().strip() dic = {} alphabet = string.ascii_uppercase start = 'A' answer = 0 for i in range(26): dic[alphabet[i]] = i f..
https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 중복된 번호에 대해서는 체육복을 빌리지도 주지도 못하기 때문에 filter 를 통해서 제거한다. 그 후에 도난당한 학생의 번호를 기준으로 조건을 충족하지 못하면 answer 에 1 씩 더하여 최종적으로 n - answer 을 반환한다. def solution(n, lost, reserve): answer = 0 lost_ = list(filter(lambda x ..
https://www.acmicpc.net/problem/14241 14241번: 슬라임 합치기 영선이와 효빈이는 슬라임을 합치는 게임을 하고 있다. 두 사람은 두 슬라임을 골라서 하나로 합쳐야 한다. 게임은 슬라임이 하나 남았을 때 끝난다. 모든 슬라임은 양수 크기를 가지고 있다. 두 www.acmicpc.net 슬라임을 합쳐봅시다! import sys N = int(sys.stdin.readline()) array = list(map(int, sys.stdin.readline().split())) array.sort(reverse=True) answer = 0 for i in range(1, len(array)): answer += (array[i-1] * array[i]) array[i] = arr..
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://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 처음에 A 에서 B 로 가면서 중간 횟수를 배열에 담아 최종적으로 B 에 왔을 때의 값을 반환하니 메모리 초과가 났다. 생각해보니, A 에서 계산된 값은 짝수이거나, 1의 자리의 수가 1인 경우밖에 없으므로 B 에서 A 로 가면서 조건에 맞으면 answer 에 1을 더해주고 조건에 맞지 않거나 A 보다 작은 수가 되어 버리면 A 가 될 수 없는 수이므로 -1을 반환하면 된다. import sys A, B = map(int, sys.stdin.readline().split()) answer = 1 while A < B: i..
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..