프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 조건 4개와 점수 기준을 만족하는 지원자 수를 빠르게 구하는 문제입니다. 핵심은 조건 검색은 딕셔너리로 처리하고, 점수 기준 검색은 정렬된 리스트와 이진 탐색으로 처리하는 것입니다.1. 나의 풀이import bisectfrom bisect import bisect_leftfrom copy import deepcopyfrom itertools import productdef count_more(a, left_val): left_idx = bisect_left(a, left_val) return len(a) - left_idxdef solution(info..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr입국심사는 모든 사람이 심사를 마치는 데 걸리는 최소 시간을 구하는 문제입니다. 핵심은 사람을 심사대에 직접 배정하는 것이 아니라, 특정 시간 안에 n명 이상 처리할 수 있는지를 기준으로 시간 범위를 이분 탐색하는 것입니다.1. 나의 풀이def solution(n, times): min_time = 1 max_time = min(times) * n mid_time = max_time // 2 while min_time = n: max_time = mid_time else: min_time = ..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr주어진 정수들을 이어 붙였을 때 만들 수 있는 가장 큰 수를 문자열로 반환하는 문제입니다.핵심은 숫자 자체의 크기가 아니라, 두 숫자를 어떤 순서로 붙였을 때 더 큰 문자열이 되는지를 기준으로 정렬하는 것입니다.1. 나의 풀이from functools import cmp_to_keydef compare(a, b): if a + b > b + a: return -1 elif a + b 이 풀이에서는 먼저 숫자를 문자열로 변환했습니다.숫자를 이어 붙여 비교해야 하므로, 정수 덧셈이 아니라 문자열 결합이 필요하기 때문입니다.정렬 기준은 compare..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문자열 배열을 특정 인덱스의 문자를 기준으로 정렬하는 문제입니다. 핵심은 1차 정렬 기준은 n번째 문자, 2차 정렬 기준은 문자열 전체의 사전순으로 두는 것입니다.1. 나의 풀이def solution(strings, n): strings.sort(key=lambda x: (x[n], x)) return stringskey에 튜플을 사용하여 정렬 기준을 두 개로 지정했습니다.첫 번째 기준은 x[n]으로, 각 문자열의 n번째 문자입니다. 두 번째 기준은 x로, n번째 문자가 같은 경우 문자열 전체를 사전순으로 비교하도록 했습니다.2. 오늘 배운 점 및 복기..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr서로 다른 인덱스의 두 수를 뽑아 만들 수 있는 모든 합을 구한 뒤, 중복을 제거하고 오름차순으로 정렬하는 문제입니다. 핵심은 combinations, set, sorted를 순서대로 연결하는 것입니다.1. 나의 풀이from itertools import combinationsdef get_pair_sums(numbers): return set(map(sum, combinations(numbers, 2)))def solution(numbers): pair_sums = get_pair_sums(numbers) return sorted(pair_sums..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr연산자 +, -, *의 우선순위를 바꿔가며 수식을 계산하고, 그 결과의 절댓값 중 최댓값을 구하는 문제입니다.핵심은 3! = 6가지 우선순위를 모두 탐색하고, 각 우선순위에 맞게 수식을 직접 계산하는 것입니다.1. 나의 풀이import refrom itertools import permutationsdef apply_operator(tokens, op): result = [] i = 0 while i 2. 오늘 배운 점 및 복기 노트완전탐색 가능성 판단연산자는 +, -, * 세 개뿐이므로 가능한 우선순위는 \(3! = 6\)가지입니다.수식 길이도..