일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- boj 20207
- c++
- 지게차와 크레인
- boj 6443
- 프로그래밍공부
- 홀짝트리
- DirectX
- boj 22942
- lock based queue
- 비밀 코드 해독
- tessellation
- pccp 기출문제 풀이
- 데이터 체커
- boj 21921
- PCCE
- 색종이와가위
- dp
- 2025 프로그래머스 코딩챌린지 1차예선
- orthographic projection
- boj 11053
- render target
- lock based stack
- DirectX12
- boj 1958
- boj 15724
- boj 1074
- LCS
- 브루트포스
- pcce 기출문제 풀이
- lock free stack
- Today
- Total
목록프로그래밍 공부/프로그래머스 (32)
오구의코딩모험

[코딩테스트 고득점 KIT - 힙] 힙큐(Heap Queue)와 우선순위 큐(Priority Queue)가 유사하다고 생각하여, 우선순위 큐를 사용하여 문제를 푸니 효율성 테스트에서 걸려 통과되지 않았다. 힙큐로 구현한 사람들이 많다하여, 왜 우선순위 큐로 하면 안되는건지 서칭을 하다... https://slowsure.tistory.com/130 아주 꼼꼼하게 써주신 글 덕분에 힙큐가 우선순위 큐보다 매우 빠르다는 것! - (PriorityQueue 는 Thread-Safe 하고 heapq는 Non-safe, 확인절차에서 시간) 문제는 힙큐에서 작은 순으로 빠져나오는 값을 리스트에 담아주며 K 값을 못넘는 경우 정해진 수식을 통하여 계산하고 다시 힙큐에 담는다. 이 과정을 반복하여 모든 값이 K 이상이..

[코딩테스트 고득점 KIT - 스택/큐] 이중 for문을 이용하여 기준으로 둔 i번째 가격이 그 다음에 나올 j초 후 가격과 비교하며 cnt 값을 증가시켰다. 마지막 값과 비교를 마치거나, 기준 가격보다 떨어진 경우 answer 값을 반환해준다. 마지막 가격은 비교할 대상이 없으므로 제외 시켰다가, 마지막에 0 값을 대입해주었다. 끝 def solution(prices): answer = [] for i in range(len(prices)): cnt = 1 for j in range(i+1,len(prices)): if prices[i] prices[j]: answer.append(cnt) break answer.append(0) return answer

[2022 KAKAO BLIND RECRUITMENT] from collections import defaultdict import math def floor(num): if num != int(num): return math.ceil(num) else: return num def time_cal(car_in,car_out="23:59"): car_out_h = car_out.split(":")[0] car_out_m = car_out.split(":")[1] car_in_h = car_in.split(":")[0] car_in_m = car_in.split(":")[1] hour_diff = int(car_out_h)-int(car_in_h) min_diff = int(car_out_m)-int(car..

2주 조금 넘게 걸렸다..! 0단계 치고는 생각보다 까다로웠던 문제도 있었다. 머리 깨우려고 하루하루 풀다보니 스탬프까지 받아서 뿌듯.

[코딩테스트 고득점 KIT - 스택/큐] 문제 짧게 3줄 요약. 1. 100% 기능 진도를 나가야 서비스에 반영할 수 있음 2. 앞서 개발할 기능을 다 구현 못하면 먼저 개발한 기능이라도 배포 불가능 3. 배포 하루에 한 번, 한 번 배포에 몇 개의 기능씩 반영되는가? divmod 함수를 이용하여 서비스에 반영하기 위해 몇 일을 더 구현해야하는지 service라는 변수로 계산하여 list에 담는다. 배포해야 할 기능이 1개 남았을 경우, 앞선 기능이 구현되지 않아 뒤의 기능들을 한번에 배포할 경우, 앞의 기능이 구현되어 배포할 경우 3가지로 나누어 구현해주면 된다! def solution(progresses, speeds): answer = [] service_list = [] # divmod(a,b) ..

[코딩테스트 고득점 KIT - 스택/큐] 완벽하게 닫혀있는 "()"를 제외시켜준다. 제외 후, 문자열이 비어있다면 올바른 괄호! "(" 괄호가 끝에 있거나, ")" 괄호로 시작하는 경우는 올바르지 않은 괄호! 또는 "(" 괄호와 ")" 괄호의 갯수가 같지 않으면, 올바르지 않은 괄호이다! 이 경우를 제외하곤 올바른 괄호! def solution(s): s = s.replace("()","") if len(s) == 0: return True if (s[0] == ")") or (s[-1] == "(") or (s.count("(") != s.count(")")): return False return True

[코딩테스트 고득점 KIT - 스택/큐] 리스트를 인덱스 순서대로 검사하며 중복이 아닐 경우에만, 정답 리스트에 추가한다. def solution(arr): answer = [arr[0]] for idx in range(len(arr)): if answer[-1] != arr[idx]: answer.append(arr[idx]) return answer

[코딩테스트 고득점KIT - 해시] 처음엔 combination 을 이용하여 풀었지만, 정확성 테스트 케이스는 모두 통과하나 효율성 테스트를 시간초과로 통과하지 못하였다. 의상의 종류를 담기 위해 clo 리스트를 생성하고 값을 넣는다. Counter 라이브러리를 이용하여 의상 종류별 count를 해준다. ex) Counter({ headgear : 2, eyewear : 3, face : 1}) 여기서 각 카운트 값을 +1 해준 후, reduce 함수를 통해 각 카운트 값을 전부 곱해준다. 그리고 -1 까지.. 이유는 다른 분의 설명을 참고하도록 하겠다.. 만약에 옷의 종류가 1개라고 해봅시다. 개수는 a개입니다. 그럼 총 a가지의 경우가 있겠죠? 종류가 2개가 되고 각각의 옷의 개수는 a, b개입니다...

[코딩테스트 고득점KIT - 해시] 어떤 번호가 다른 번호의 접두어인 경우, False ex) "119" 는 "1195524421"의 접두어, return False 그렇지 않은 경우, True phone_book 리스트 값을 오름차순으로 정렬 해준다면, 유사한 숫자들끼리 배치가 될 것이다. ex) ["119", "97674223", "1195524421"] → ["119", "1195524421", "97674223"] index가 낮은 값은 바로 뒤인 index+1 값과 유사하지만 실제 수치는 낮다. 그러므로 서로 맞닿는 index 값들만 비교를 해준다. ex) 1) phone_book[0], phone_book[1] 비교 2) phone_book[1], phone_book[2] 비교 반복문으로 비교..

[코딩테스트 고득점KIT - 해시] from collections import defaultdict def solution(genres, plays): answer = [] # 장르, 재생 횟수 딕셔너리 생성 및 초기화 play_dict = defaultdict(int) genre_dict = defaultdict(list) # 장르, 재생 횟수 딕셔너리 값 추가 for idx in range(len(genres)): play_dict[genres[idx]] += plays[idx] genre_dict[genres[idx]].append(plays[idx]) # 재생 횟수의 합 딕셔너리 내림차순 정렬 후, # 재생 횟수가 가장 높은 장르부터 장르 딕셔너리에 대입하여 재생 횟수를 내림차순으로 저장한다. #..