일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이분탐색
- dfs
- Re
- python
- 수학
- java
- 동적 계획법
- backjoon
- 그리디
- divmod
- 파이썬
- BFS
- heapq
- 백준
- 카카오
- 재귀함수
- 정규식
- 다익스트라
- Combinations
- 정렬
- DateTime
- 추석맞이 코딩챌린지
- KAKAO BLIND RECRUITMENT
- Set
- 위클리 챌린지
- Zip
- 자바
- lambda
- 프로그래머스
- programmers
- Today
- Total
목록python (50)
상상쓰
https://www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 www.acmicpc.net 감소하는 수가 되려면 0 ~ 9 중에서 중복 없이 뽑아 오름차순으로 정렬한 수랑 필요충분조건이 된다. 가장 큰 감소하는 수는 9876543210이며 10C1 + 10C2 + 10C3 + ... + 10C10 = 2^10 - 1 = 1023이며 N = 1022일 때다. (N은 0부터 시작) 즉, N이 1022 보다 크면 -1을 반환하고 그렇지 않으면 combination 과 sort ..
https://programmers.co.kr/learn/courses/30/lessons/92344 코딩테스트 연습 - 파괴되지 않은 건물 [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6 programmers.co.kr 문제를 풀었을 때, 누적 합을 생각했으나 시간초과가 났다. 당시에 풀었던 방법은 예를 들어, skill이 [1, 0, 0, 3, 4, 4] 라고 한다면, -4 0 0 0 0 4 -4 0 0 0 0 4 -4 0..
https://www.acmicpc.net/problem/1091 1091번: 카드 섞기 지민이는 카지노의 딜러이고, 지금 3명의 플레이어(0, 1, 2)가 있다. 이 게임은 N개의 카드를 이용한다. (0 ~ N-1번) 일단 지민이는 카드를 몇 번 섞은 다음에, 그것을 플레이어들에게 나누어 준다. 0 www.acmicpc.net 문제만 이해하면 어렵지 않게 풀 수 있다. 좋은 풀이는 아닌지만 하라는 대로 하면 풀린다. import sys N = int(sys.stdin.readline()) P = list(map(int, sys.stdin.readline().split())) S = list(map(int, sys.stdin.readline().split())) result = [] mix = [i fo..
https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net 사이클을 만족하면 그 수는 구하고자 하는 집합의 원소가 될 수 있다.(최대로 많이 뽑아야 하기 때문이다.) 또한, 집합의 원소라면 사이클이기 때문에 필요충분조건을 만족하여 해당하는 수를 구하면 된다. 예제 입력을 예로 들면, 1 -> 3 -> 1 : 1이 사이클을 만족하므로 3 또한 사이클을 만족한다. 2 -> 1 -> 3 -> 1 : 2는 사이클을 만족하지 않으므로 집합의 원소가 될..
https://programmers.co.kr/learn/courses/30/lessons/92342 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr 이 문제를 작년에 2022 KAKAO BLIND RECRUITMEMT 에서 풀었을 때는 DFS로 접근하였다. 이번에는 product 를 이용하여 경우의 수 2,048개를 구해놓고 조건에 맞으면 해당 점수의 차이와 라이언의 기록을 기억하여 점수가 크거나, 점수가 같을 때는 낮은 점수의 과녁을 많이 맞힌 기록을 새로이 기억하여 마지막으로 기억하는 라이언의 기록을 반환한다..
https://programmers.co.kr/learn/courses/30/lessons/92341 코딩테스트 연습 - 주차 요금 계산 [180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000] programmers.co.kr 오랜만에 풀어서 그런지 문법들이 기억이 잘 안 난다. dictionary 를 이용하여 입차 시간과 출차 될 때 주차시간을 기록한다. import math def solution(fees..
https://programmers.co.kr/learn/courses/30/lessons/92335 코딩테스트 연습 - k진수에서 소수 개수 구하기 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소 programmers.co.kr 1. k진수를 구한다. 2. P는 각 자릿수에 '0' 을 포함하지 않고 양옆에 '0' 또는 아무것도 없어야 하므로 '0' 을 기준으로 쪼개어 배열을 만든다. 3. 배열 중 소수인 원소의 개수를 구한다. import math def prime(n): answer = True for i in range(2, int..
https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 작년에 풀었었는데 반가웠다. set 을 사용하여 정지당한 유저를 구하고 그 유저를 신고한 인원을 차례로 확인하여 count[신고자] += 1 을 한다. from collections import defaultdict def solution(id_list, report, k): answer = [] dic = defaultdict(set) count = d..
https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 오랜만에 올립니다. k 광년을 이동했을 때 다음에는 k-1, k, k+1 광년을 이동할 수 있다는 조건과 마지막은 1광년을 남겨야 하는 조건 때문에 최소한의 공간이동은 대칭적인 성격을 가질 수밖에 없다. 1 (1 * 1) 1 1 (2 * 1) 1 2 1 (2 * 2) 1 2 2 1 (3 * 2) 1 2 3 2 1 (3 * 3) 1 2 3 3 2 1 (4..
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 받은 배열을 순서대로 이동하면서 합을 구한 뒤 그 합이 S 를 넘으면 k = 0 을 시작으로 1씩 더해주면서 temp 가 S 보다 작아질 때까지 array[k] 를 빼준다. 이때 연속된 수들의 부분합이 S 를 넘어가는 길이는 i - k + 2 이며 그 중 최솟값을 반환하면 된다. import sys N, S = map(int, sys.stdin.readline().split()) a..