| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 동적 프로그래밍
- Deque
- 추천시스템
- find()
- knowledge
- Recommendation
- isalnum()
- Stack
- bfs
- LSTM
- 우선순위 큐
- DP
- 프로그래머스
- isdigit()
- explainable recommendation
- Dynamic Programming
- Python
- 그래프 탐색
- 자료구조
- Knowledge graph
- 백준
- 알고리즘
- 그래프
- Algorithm
- isalpha()
- kg
- 파이썬
- 코테
- 정렬
- isnumeric()
- Today
- Total
목록Algorithm (43)
데린이 고인물되기
문제 설명XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다.이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있는데, 한 유저가 오늘 이 던전들을 ..
🧩 1. Lower Bound 이분탐색에서 원하는 값(target) 이상이 처음 등장하는 위치를 찾는 것예시arr = [13, 35, 40, 56, 56, 56, 59, 60, 62, 84]위와 같은 배열이 정렬되어 있다고 할 때, target = 56 일 때, 처음으로 56이 나오는 위치는 index 3 → Lower Bound(56) = 3이걸 찾는게 이진 탐색에서 lower bound Lower Bound 코드def lower_bound(arr, target): left = 0 right = len(arr) - 1 min_idx = len(arr) # 최대 index + 1로 초기화 while left = target: min_idx = mid ..
문제 설명n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다.처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있습니다.모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고 싶습니다.입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개변수로 주어질 때, 모든 사람이 심사를 받는데 걸리는 시간의 최솟값을 return 하도록 solution 함수를 작성해주세요.제한사항입국심사를 기다리는..
문제 설명Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.입출..
문제 설명점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다.전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작..
문제 설명0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항numbers의 길이는 1 이상 100,000 이하입니다.numbers의 원소는 0 이상 1,000 이하입니다.정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.입출력 예
문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.2에서 나온 배열의 3번째 숫자는 5입니다.배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항array의 길이는 1 이상 100 이하입니다.array의 각..
문제 설명한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항numbers는 길이 1 이상 7 이하인 문자열입니다.numbers는 0~9까지 숫자만으로 이루어져 있습니다."013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예numbersreturn"17"3"011"2 입출력 예 설명예제 #1[1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다. 예제 #2[0, 1, 1]으로는 소수 [11, 101]를 만들 수 있..
파이썬에서 순열을 구하려 할 때, itertools 모듈의 permutations 함수를 사용하면 아주 간단하게 구현할 수 있습니다. 이번 글에서는 permutations 함수의 사용법과 예제를 간단히 정리해보았습니다. 1. permutations 기본 사용법from itertools import permutationsdata = ['A', 'B', 'C']result = permutations(data, 2)for item in result: print(item) 출력 결과 ⬇️('A', 'B')('A', 'C')('B', 'A')('B', 'C')('C', 'A')('C', 'B') permutations(data, r)은 data에서 r개를 뽑아 순서를 고려한 조합(순열)을 튜플 형태로 반환..
소수는 1과 자기 자신만을 약수로 가지는 수입니다. 코딩 테스트에서 자주 등장하는 개념이라, 소수를 판별하는 알고리즘은 꼭 알고 계시는 것이 좋습니다. 이번 글에서는 Python으로 소수를 판별하는 방법 중 대표적인 두 가지를 소개드리도록 하겠습니다. 1. 기본 소수 판별법 (완전탐색 방식)가장 단순하게 먼저 떠올릴 수 있는 방법은 2부터 n-1까지 전부 나누어보는 것입니다. 만약 하나라도 나누어떨어지면 소수가 아니고, 그렇지 않으면 소수로 판단하는거죠.def is_prime(n): if n ⚠️ 단점이 방법은 아주 단순하지만, 검사 횟수가 많아 수가 커질수록 비효율적입니다.예를 들어 10000이 소수인지 판단하려면 2부터 9999까지 모두 나누어봐야 하므로 시간이 오래 걸립니다.그래서 사용할 수..