| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 정렬
- 백준
- isdigit()
- Algorithm
- 동적 프로그래밍
- isnumeric()
- Python
- DP
- LSTM
- kg
- 알고리즘
- 그래프
- Stack
- 프로그래머스
- isalpha()
- isalnum()
- 파이썬
- bfs
- 추천시스템
- Dynamic Programming
- 자료구조
- 코테
- Recommendation
- find()
- 우선순위 큐
- Knowledge graph
- 그래프 탐색
- explainable recommendation
- Deque
- knowledge
- Today
- Total
목록Algorithm (43)
데린이 고인물되기
더보기문제준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다.준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다. 입력첫째 줄에 준규가 가지고 있는 숫자 카드의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 출력첫째 줄에 준규가 가장 많이 가지고 있는 정수를 출력한다. 예제 입력 1 512121 예제 출력 1 1 예제 입력 2 6121212 예제 출력 2 1 핵심 아이디어 정렬된 값들을 순서대로 순회하면서, 같은 수가 ..
a = [1, 4, 5, 2, 7]a.sort() # 전체 정렬print(f"Sorted list: {a}") # [1, 2, 4, 5, 7]b = [1, 5, 4, 2, 7]b_sorted_part = sorted(b[:3]) + b[3:] # 앞 5개만 정렬하고 나머지는 그대로 두기print(f"Sorted part: {b_sorted_part}") #[1, 4, 5, 2, 7]출력 결과Sorted list: [1, 2, 4, 5, 7]Sorted part: [1, 4, 5, 2, 7] 원하는 기준을 만들어서 정렬을 할 수 도 있다.a = [1, 2, 3, 4, 5, 6, 7]# key로 정렬 기준 정의: (나머지, 원래 숫자)a.sort(key=lambda x: (x % 5, x))prin..
문제 설명어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다.문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요.제한 조건number는 2자리 이상, 1,000,000자리 이하인 숫자입니다.k는 1 이상 number의 자릿수 미만인 자연수입니다.입출력 예numberkreturn"1924"2"94""1231234"3"323..
바킹독의 실전 알고리즘 강좌를 보고 파이썬 버전으로 정리했습니다. 정의Greedy = 지금 가장 최적인 답을 근시안적으로 택하는 알고리즘 = 관찰을 통해 탐색 범위를 줄이는 알고리즘 이상적인 풀이 흐름관찰을 통해 탐색 범위를 줄이는 방법을 고안한다탐색 범위를 줄여도 올바른 결과를 낸다는 사실을 수학적으로 증명한다실제 코테에서 수학적으로 증명할 시간따위 없으니 대충 주어진 예제에서 잘 돌아가면 그냥 내 풀이는 완벽하다는 믿음을 가지고 가는 메타구현에서 문제를 통과한다코딩테스트에서의 추천 전략거의 똑같은 문제를 풀어봤거나 간단한 문제여서 나의 그리디 풀이를 100% 확신한다➡️짜서 제출해보고 틀리면 빠르게 손절100% 확신은 없지만 맞는 것 같은 그리디 풀이를 찾았다➡️일단은 넘어가고 ..
문제 설명전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.구조대 : 119박준영 : 97 674 223지영석 : 11 9552 4421전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항phone_book의 길이는 1 이상 1,000,000 이하입니다.각 전화번호의 길이는 1 이상 20 이하입니다.같은 전화번호가 중복해서 들어있지 않습니다.입출력 예제phone_bookret..
문제 설명도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다.각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 두 집을 털면 경보가 울립니다.각 집에 있는 돈이 담긴 배열 money가 주어질 때, 도둑이 훔칠 수 있는 돈의 최댓값을 return 하도록 solution 함수를 작성하세요.제한사항이 마을에 있는 집은 3개 이상 1,000,000개 이하입니다.money 배열의 각 원소는 0 이상 1,000 이하인 정수입니다.입출력 예moneyreturn[1, 2, 3, 1]4나의 답def making_dp(money): n = len(money) money.insert(0,0) # 더미 변수 추가 dp = [0]..
문제 링크 문제 설명사칙연산에서 더하기(+)는 결합법칙이 성립하지만, 빼기(-)는 결합법칙이 성립하지 않습니다.예를 들어 식 1 - 5 - 3은 연산 순서에 따라 다음과 같이 다른 결과를 가집니다.((1 - 5) - 3) = -7(1 - (5 - 3)) = -1위 예시와 같이 뺄셈은 연산 순서에 따라 그 결과가 바뀔 수 있습니다.또 다른 예로 식 1 - 3 + 5 - 8은 연산 순서에 따라 다음과 같이 5가지 결과가 나옵니다.(((1 - 3) + 5) - 8) = -5((1 - (3 + 5)) - 8) = -15(1 - ((3 + 5) - 8)) = 1(1 - (3 + (5 - 8))) = 1((1 - 3) + (5 - 8)) = -5위와 같이 서로 다른 연산 순서의 계산 결과는 [-15, -5, -5,..
문제 설명계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다.아래 그림은 m = 4, n = 3 인 경우입니다.가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다.격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어집니다. 오른쪽과 아래쪽으로만 움직여 집에서 학교까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요.제한사항격자의 크기 m, n은 1 이상 100 이하인 자연..
문제 설명아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.12 = 5 + 5 + (5 / 5) + (5 / 5)12 = 55 / 5 + 5 / 512 = (55 + 5) / 55를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다.이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항N은 1 이상 9 이하입니다.number는 1 이상 32,000 이하입니다.수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다.최솟값이 8보다 크면 -1을 return 합니다.입출력 예Nnumberreturn51242113입출력 예 설명예제..
문제RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자.1번 집의 색은 2번 집의 색과 같지 않아야 한다.N번 집의 색은 N-1번 집의 색과 같지 않아야 한다.i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.입력첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 같은 ..