일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 그리디
- 수학
- divmod
- programmers
- Re
- KAKAO BLIND RECRUITMENT
- Set
- 위클리 챌린지
- DateTime
- dfs
- 정규식
- 동적 계획법
- 추석맞이 코딩챌린지
- Combinations
- 재귀함수
- 카카오
- heapq
- 자바
- 정렬
- backjoon
- python
- BFS
- java
- 다익스트라
- 백준
- 파이썬
- 이분탐색
- Zip
- lambda
- 프로그래머스
- Today
- Total
목록Coding Test (191)
상상쓰
https://programmers.co.kr/learn/courses/30/lessons/12985 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr 토너먼트이므로 n 과 상관없이 a 와 b 는 만난다. 1부터 두 명씩 그룹을 만들고 a 와 b 가 같은 그룹일 때 answer 을 return 해주면 된다. def solution(n, a, b): answer = 0 while True: answer += 1 a = int(a / 2 + 0.5) b = int(b / 2 + 0.5) i..
https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 휴가 기간이 20일이고 캠핑장은 연속하는 8일 중 5일만 사용할 수 있다고 하자. 그러면 적어도 캠핑장이 두 번 16일 열릴 것이고 5 * 2 = 10 일을 사용할 수 있다. 남은 4일과 다음 캠핑장이 열렸을 때 사용할 수 있는 기간인 5일과 비교하여 작은 값을 더해주면 휴가 기간 캠핑장을 이용할 수 있는 기간이 된다. 14를 return 하면 된다. import sys C = 0 answe..
https://programmers.co.kr/learn/courses/30/lessons/60062 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하 programmers.co.kr 풀면서 while, for 가 많이 나와서 복잡하기도 하고, 이렇게 푸는 게 아닌가 싶기도 하여 다른 방법을 생각해보려고 하였으나 배열의 길이도 짧고 해서 한 번 시도해봤다. 다행히 통과되었다. 접근 방법은 [1, 5, 6, 10] -> [1, 5, 6, 10, 1+12, 5+12, 6+12, 10+12] 설정하여 반시계방향은 +12 해서 한 방향으로만 생각하도..
https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 우선순위 큐(heapq) 를 이용해서 가장 작은 2개의 숫자의 합을 계산해주고 그 값을 또 queue 에 넣어준다. 이러한 과정을 반복하여 queue 에는 하나의 값만 남을 때까지 계속한다. 마지막으로 숫자의 합을 계속 더해준 answer 를 return 한다. import sys import heapq answer = 0 N = int(sys.stdin.readline()) que..
https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 정답 비율이 약 36% 인데 많이 쉬웠다. 방향은 정해져 있으니 도시를 지나갈 때 현재까지의 가장 낮은 가격으로 계산해주면 된다. import sys answer = 0 N = int(sys.stdin.readline()) distance = sys.stdin.readline().split() price = sys.stdin.readline().split() m = 100000000..
https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 어제 배운 map, reduce 를 사용해봤다. 연산자의 우선순위를 정할 수 있는 경우의 수는 6개이다. 6개 정도면 배열로 나타냈어도 됐지만, permutations 도 한 번 써봤다. split() 을 사용하여 우선순위가 '+' > '-' > '*' 라고 한다면, 1. '100-200*300-500+20' -> ['100-200', '300-500+20']..
https://programmers.co.kr/learn/courses/30/lessons/64064 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 불량 사용자 아이디의 해당하는 사용자 아이디의 목록을 가지고 간단히 풀 수 있을 것으로 생각했는데 중복된 값 때문에 결국 데카트르 곱과 set() 을 이용하여 실제 제재 아이디 목록을 구하여 그 목록의 개수를 return 하였다. 최근 파이썬 문법을 공부하고 있는데 filter 한 번 써봤다. from itertools import product def solu..
https://programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 처음에는 board[][] 의 값을 비교하여 변화시켜 최솟값을 재활용하는 방법으로 구현..
https://programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr start 와 end 를 0 으로 잡고 조건을 잘 설정하여 1 씩 늘려준다. 모든 보석을 포함하는 구간을 만족했을 때 비교하여 길이가 최소가 되는 구간을 찾는다. from collections import defaultdict def solution(gems): answer = [] N = len(set(gems)) dic = defaultdict(int) dic[gems[0]] = 1 start, end = ..
https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 주어진 단어에 index 마다 가중치를 부여한다. 같은 index 라도 중복이 일어날 때는 같은 index 의 다른 알파벳보다 가중치를 크게 줘야 하므로 index 의 초기 가중치를 10 ** j 로 한다. import sys from collections import defaultdict N = int(sys.stdin.readline()) dic = defaultdict(int) arra..