| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Dynamic Programming
- LSTM
- isnumeric()
- 그래프 탐색
- 프로그래머스
- 알고리즘
- 정렬
- knowledge
- 우선순위 큐
- find()
- 코테
- Recommendation
- explainable recommendation
- Deque
- Algorithm
- 추천시스템
- isalnum()
- 그래프
- kg
- isalpha()
- Python
- 동적 프로그래밍
- 백준
- 자료구조
- 파이썬
- bfs
- isdigit()
- Stack
- DP
- Knowledge graph
- Today
- Total
목록Algorithm (43)
데린이 고인물되기
1. 반올림 (round)round(x) : 가장 가까운 정수로 반올림import math를 사용하지 않음print(round(3.5)) # 4print(round(2.5)) # 2 (주의!)print(round(2.675, 2)) # 2.67 (부동소수점 특성)주의파이썬의 round는 "Banker's Rounding" (또는 Round half to even) 규칙을 사용딱 .5로 끝나는 경우, 가까운 짝수 정수 쪽으로 반올림함. 그래서 :print(round(1.5)) # 2 (짝수로 감)print(round(2.5)) # 2 (짝수로 감)print(round(3.5)) # 4 (짝수로 감) 2. 올림 (math.ceil)항상 큰 정수로 올림import mathprint(math.ceil..
🧩"05:34"와 "04:56"의 시간 차이를 분 단위로 구하는 방법from datetime import datetimet1, t2 = "05:34", "04:56"fmt = "%H:%M"dt1 = datetime.strptime(t1, fmt)dt2 = datetime.strptime(t2, fmt)diff_minutes = abs((dt1 - dt2).seconds // 60)print(diff_minutes) # 38 🥲코테에서 더 유용한 단순 계산 (더 빠르다)h1, m1 = map(int, t1.split(":"))h2, m2 = map(int, t2.split(":"))minutes1 = h1 * 60 + m1minutes2 = h2 * 60 + m2print(abs(minutes1 - ..
defaultdict는 함수(callable)를 인자로 받아야 함.리스트를 그대로 넣으면 모든 키가 같은 리스트 객체를 공유하게 되므로 위험.예를들어, 각 키마다 독립적인 [9,9,9] 리스트가 필요하다면 lambda로 감싸야 함:from collections import defaultdictd = defaultdict(lambda: [9, 9, 9])print(d['a']) # [9, 9, 9]print(d['b']) # [9, 9, 9] (서로 다른 객체)
문제 설명문제 설명주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다.요금표기본 시간(분)기본 요금(원)단위 시간(분)단위 요금(원)180500010600 입/출차 기록시각(시:분)차량 번호내역05:345961입차06:000000입차06:340000출차07:595961출차07:590148입차18:590000입차19:090148출차22:595961입차23:005961출차 자동차별 주차 요금차량 번호누적 주차 시간(분)주차 요금(원)000034 + 300 = 3345000 + ⌈(334 - 180) / 10⌉ x 600 = 1460001486705000 +⌈(670 - 180) / 10⌉x 600 = 344005..
문제 설명뉴스 클러스터링여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다.개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다.카카오 첫 공채..'블라인드' 방식 채용카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용카카오, 블라인드 전형으로 신입 개발자 공채카카오 공채, 신입 개발자 코딩 능력만 본다카카오, 신입 공채.. "코딩 실력만 본다"카카오 "코딩 능력만으로 2018 신입 개발자 뽑는다"기사의 제목을 기준으로 "블..
문제Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.1 + 2 + 3 + 4 + 5 = 154 + 5 + 6 = 157 + 8 = 1515 = 15자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.제한사항n은 10,000 이하의 자연수 입니다. 입출력 예nresult154입출력 예 설명입출력 예#1문제의 예시와 같습니다. 나의 답# 짝수개로 나눠질 수 있으려면 -> 1 2 3 4 5 6 -> 21 에서 1,6/2,5/3,4 쌍으로 합이 7이니까 7*3 = 21. 즉..
itertools.product는 중복을 허용하며, 주어진 리스트의 모든 가능한 조합(데카르트 곱)을 만들어주는 도구기본 사용법from itertools import productfor p in product(['A', 'B'], repeat=2): print(p)출력 결과:('A', 'A')('A', 'B')('B', 'A')('B', 'B') repeat=2는 두 글자로 조합한다는 뜻중복 허용순서 고려함 → ('A', 'B')와 ('B', 'A')는 다르게 봄사용 예시🔍 'A', 'E', 'I', 'O', 'U'로 만들 수 있는 단어 생성from itertools import productalphabet = ['A', 'E', 'I', 'O', 'U']all_words = []for i in ..
문제 설명매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다.섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다.Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요.제한 사항scoville의 길이..
1. 개념 정리: 힙(Heap) = 우선순위 큐우선순위 큐는 일반적인 큐와 달리, 값의 크기에 따라 먼저 나가는 순서가 결정됨파이썬의 heapq는 최소 힙(min heap) 기반:항상 가장 작은 값이 먼저 나옴최대 힙(max heap)을 쓰고 싶을 땐 값을 음수로 저장해서 우회 2. 힙 사용법 (파이썬 heapq)- 최소 힙 (기본 동작)import heapqheap = []# 삽입: heappushheapq.heappush(heap, 4)heapq.heappush(heap, 1)heapq.heappush(heap, 7)# 출력 (가장 작은 값)print(heapq.heappop(heap)) # 1print(heapq.heappop(heap)) # 4print(heapq.heappop(heap)) ..
1. 스택(Stack)정의:Last In, First Out (LIFO): 나중에 넣은 데이터가 먼저 나옴파이썬 구현 방법:주로 list를 이용해 구현stack = []# 삽입 (push)stack.append(1)stack.append(2)# 삭제 (pop)top = stack.pop() # 2 특징:append() 로 끝에 추가pop() 으로 끝에서 제거2. 큐(Queue)정의:First In, First Out (FIFO): 먼저 넣은 데이터가 먼저 나옴파이썬 구현 방법:리스트 list를 그대로 쓰면 느림 (앞에서 삭제 시 O(N))collections.deque를 사용하는 게 효율적from collections import dequequeue = deque()# 삽입 (enqueue)queue...