일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- lock based queue
- the maximum subarray
- DirectX12
- DirectX
- c++
- boj 6443
- dp
- boj 1717
- 프로그래밍공부
- lock based stack
- PCCE
- LCS
- two characters
- find the town judge
- 지게차와 크레인
- boj 1074
- pccp 기출문제 풀이
- 비밀 코드 해독
- ice cream parlor
- count triplets
- special string again
- lock free stack
- find the running median
- the longest increasing subsequence
- string construction
- boj 11657
- pcce 기출문제 풀이
- 브루트포스
- making anagrams
- 2025 프로그래머스 코딩챌린지 1차예선
- Today
- Total
목록프로그래밍 공부 (93)
오구의코딩모험

[코딩테스트 고득점 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]) # 재생 횟수의 합 딕셔너리 내림차순 정렬 후, # 재생 횟수가 가장 높은 장르부터 장르 딕셔너리에 대입하여 재생 횟수를 내림차순으로 저장한다. #..

https://leetcode.com/problems/add-two-numbers/ Add Two Numbers - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

[코딩테스트 고득점KIT - 해시] 문제 설명이 긴데 요악하자면, 박사님이 폰켓몬을 나한테 절반 떼어 주시는데 난 절반을 가져갈 때, 많은 종류의 폰켓몬이 들어있음 한다. 즉 N개(항상 짝수)의 폰켓몬이 있다면, 난 N/2 마리를 데려갈 수 있다. 몇 종류의 폰켓몬이 있는지 알기 위해 set로 중복을 제거 해준다. nums = 폰켓몬 종류의 수, cnt = 내가 데려갈 폰켓몬 수 데려갈 폰켓몬 보다 종류가 적다면 종류의 수가 곧, 최대 종류의 수가 더 크다면 내가 데려갈 폰켓몬 수가 최대일 것이다.

[코딩테스트 고득점KIT - 해시] #주석# 에 쓰여있는 반복문으로 완주한 선수를 참가자 리스트에서 하나씩 빼는 코드를 작성했더니 효율성 테스트에서 모두 실패가 나온다. 문제 카테고리 해시기 때문에 Counter를 호출해서 원소의 빈도수를 빼주는 방식으로 다시 구현. Counter 말고 list에 있는 count를 사용해도 될 것 같다. list에 count가 있는지 몰랐다면 참고! python 문서 - list

문제 설명 3줄 요약 1. 두 좌표에 터렛이 각각 존재한다. 2. 두 터렛에서 타겟까지의 거리가 주어진다. 3. 타겟이 존재할 수 있는 위치의 수를 구하여라. 알고리즘의 분류가 수학, 기하학인 것처럼 문제 설명이 굉장히 길지만 두 원의 접점을 구하라는 문제이다! 각 중심(좌표)과 반지름(타겟까지의 거리) 가 주어졌을 때, 겹치는 접점의 경우의 수는 위의 그림을 참고한다면 쉽게 알 수 있다! 기본적으로 두 원이 일치할 때, 답은 -1 (2) 두 원이 외접할 때, 답은 1 (3) 두 원이 내접할 때, 답은 1 (4) 두 원이 서로 떨어져 있고 만나지 않을 때, 답은 0 (5),(6) 한 원이 다른 원의 내부에 있고 두 원이 만나지 않을 때, 답은 0. (1)과 같은 나머지 경우, 답은 2 6 가지 정도로 분..

문제 3줄 요약 1. 8x8 체스판을 만들 것이다. 검은색,흰색 패턴인지 흰색,검은색 패턴인지 고려해야한다. 2. 틀린 패턴이 있다면 다시 색칠한다. 3. 크기가 다양한 체스판에서 최소한으로 고쳐서 색칠하여 만들 때, 수정하는 최솟값을 구하자! 알고리즘 분류가 브루트포스 알고리즘이었다. 즉, 완전탐색 알고리즘, 모든 경우의 수를 탐색하면서 요구 조건에 충족되는 결과만 가져오는 알고리즘이다. 따라서 틀을 먼저 만들고 필요한 모든 조건을 생각해보자! # N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수 입력 V,W = map(int, input().split()) chess = [] count = 0 count_list = [] color_list = ["W","B"] if __name__ == ..