분류 전체보기
-
[Python] 프로그래머스 / 2019 KAKAO BLIND RECRUITMENT / 블록 게임코딩테스트 2024. 10. 5. 20:36
문제 링크 와... 이거 어렵고 재밌었다. 실전 코테에서 이런 그림이 뜨게 된다면 머릿속에 큰일났다는 생각 말고는 들지 않을 것이다. 하지만 차근차근 하다보면 어렵지 않다. 일단 위에서 블록을 떨어뜨려서 직사각형을 만들 수 있는 건 위의 다섯 개 밖에 없다. 이들은첫 번째 줄에 하나, 두 번째 줄에 하나, 세 번째 줄에 두 개첫 번째 줄에 하나, 세 번째 줄에 세 개중에 하나이다. 풀이 방법일단 문제에 제시된 예시를 살펴보자. 첫 번째로는 우선, Counter를 이용해서 각 행에 적힌 숫자를 세는 것이다.Counter를 이용하는 이유는 참조를 빠르고 효율적으로 할 수 있기 때문이다. 저 Counter들은 리스트에 저장한다. 그 다음으로는, 리스트에 저장된 Counter를 분석한다. 맨 위에있는 "가능할..
-
[Python] 프로그래머스 / 단어퍼즐코딩테스트 2024. 10. 5. 09:26
문제 링크 정답 코드def solution(strs, t): word_set = set(strs) N = len(t) dp = [float('inf')] * (N + 1) dp[0] = 0 t = '_' + t for idx in range(1, N + 1): for j in range(1, 6): if idx - j >= 0 and t[idx - j+1:idx+1] in word_set: dp[idx] = min(dp[idx], dp[idx - j] + 1) return dp[-1] if dp[-1] != float('inf') else -1
-
[Python] 프로그래머스 / 베스트앨범코딩테스트 2024. 10. 5. 09:03
문제 링크 뭔가 좀 기교가 가득해보이는 코드... 흑백요리사도 아니고 코딩테스트인데 그게 나쁜 건 아니지만.from collections import defaultdictdef solution(genres, plays): genre_cnt = defaultdict(list) genre_sum = defaultdict(int) for i, zip_ in enumerate(zip(genres, plays)) : genre, play = zip_ genre_cnt[genre].append((play, i)) genre_sum[genre] += play sorted_genres = sorted(genre_sum, key=la..
-
[Python] 프로그래머스 / 2021 카카오 채용연계형 인턴십 / 표 편집코딩테스트 2024. 10. 4. 19:34
문제 링크 정답 코드def solution(n, k, cmd): prev_of = {i: i - 1 for i in range(n)} post_of = {i: i + 1 for i in range(n)} post_of[n - 1] = None prev_of[0] = None deleted = [] idx = k for command in cmd: if command[0] == 'U': X = int(command.split()[1]) for _ in range(X): idx = prev_of[idx] elif command[0] == 'D': ..
-
[Python] 프로그래머스 / 2020 KAKAO BLIND RECRUITMENT / 블록 이동하기코딩테스트 2024. 10. 4. 19:00
문제 링크 쉽게 쉽게로봇은 두 칸을 차지하며, 상하좌우로 움직일 수 있고, 90도로 회전할 수 있다. 이때 로봇 두 칸 모두 회전의 축이 될 수 있다. 일단은 로봇의 위치를 다음과 같이 저정할 것이다. 가로로 있으면 False, 세로로 있으면 True로 저장하고, 두 칸 중 X축, Y축 값이 더 작은 좌표를 대표위치값으로 저장할 것이다. 또한 회전을 위해서는 조건 체크를 꼼꼼히 해야 한다: 회전을 하면 좌표값은 다음과 같이 된다: 회전하는 그림을 합쳐보면 : 즉, 회전을 위해서는 남동, 남서, 북동 방향을 탐색하고, 북서 방향은 탐색할 필요 없다.회전을 위한 if문이 길어지는 걸 방지하기 위해 컨디션 변수를 선언하여 이를 if문에 활용할 것이다.#컨디션 변수들 먼저 선언south_east = cx ..
-
[Python] 프로그래머스 / 디스크 컨트롤러코딩테스트 2024. 10. 3. 21:02
문제 링크 두 개의 queue를 관리하라하라는 대로 하면 되지만, 생각보다 까다롭고 섬세한 문제이다. 이게 또 은근히 실전 코테에서는 어려운 요소이다.import heapqfrom collections import dequedef solution(jobs): n = len(jobs) jobs.sort() jobs = deque(jobs) total_time, current_time = 0, 0 queue = [] while jobs or queue : while jobs and jobs[0][0]
-
[Python] 프로그래머스 / Summer/Winter Coding(~2018) / 지형 편집코딩테스트 2024. 10. 3. 20:14
문제 링크 무식한 방법 (시간복잡도 초과)이 문제는 상당히 쉽지 않은데, 사실 첫눈에는 쉬워보인다. 그냥 하라는 대로 하는 건 어렵지 않기 때문이다. 문제는 시간복잡도이다.from collections import Counterdef solution(land, P, Q): sqz_land = [] for wall in land : sqz_land += wall min_h = min(sqz_land) max_h = max(sqz_land) sqz_land_counter = Counter(sqz_land) min_cost = float('inf') for flattened_h in range(min_h, max_h+1) : ..