프로그래머스 238

[프로그래머스] [완전탐색] Lv.1 /최소직사각형 (파이썬/Python)

1. 문제 설명2. 코드 def solution(sizes): rotated = [(max(w,h),min(w,h)) for w,h in sizes] max_w = max(w for w,h in rotated) max_h = max(h for w,h in rotated) return max_w * max_h3. 풀이 과정리스트 sizes에서 w와 h를 받아서 만들수 있는 최소한의 직사각형을 찾는 문제이다.w,h는 원한다면 바뀌어도 되므로rotated변수에 sizes의 원소를 w,h로 받아 max()값을 먼저 받고, min()값을 받아서 저장해둔다.w의 최댓값 max_w는 rotated의 w,h 중 w로 max()로 최댓값을 구한다.h의 최댓값은 w를 h로만 바꿔 진행하면 된다..

[프로그래머스] [정렬] Lv.2 /H-index (파이썬/Python)

1. 문제 설명2. 코드 def solution(citations): citations.sort(reverse=True) for i,c in enumerate(citations): if i >= c: return i return len(citations)3. 풀이 과정citations를 정렬 시킨 후 h를 찾으면 된다.먼저 내림차순으로 정렬시키기 위해 sort()에 reverse=True 조건을 넣어준다.enmerate(citations)으로 인덱스 i와 값 c를 for문으로 받는다.i가 c이상이 되면, 지금까지 인용 수가 c의 값보다 커지는 것이므로 바로 i를 반환한다.조건문을 만족하지 않고 반복문을 빠져나오면 마지막 값의 인덱스가 조건을 만족하..

[프로그래머스] [정렬] Lv.2 /가장 큰 수 (파이썬/Python)

1. 문제 설명2. 코드 def solution(numbers): numbers = list(map(str,numbers)) numbers.sort(key=lambda x: x*3, reverse=True) answer = ''.join(numbers)3. 풀이 과정모든 정수를 문자열로 변환하기 위해 map(str,numbers)로 list()한다.원소가 1000미하이기 때문에 문자열로 받은 원소를 3배로 이어 붙여서 글자 비교를 한다.내림차순으로 비교하기 위해 sort(key = lambda x : x*3, reverse=True)로 한다.정렬시킨 문자열을 ''.join(numbers)로 이어 붙여 answer에 선언한다. 4. 추천 코드def solution(numbers): ..

[프로그래머스] [정렬] Lv.1 /K번째수 (파이썬/Python)

1. 문제 설명2. 코드 def solution(array, commands): answer = [] for i,j,k in commands: sliced = array[i-1:j] sliced.sort() answer.append(sliced[k-1]) return answer3. 풀이 과정슬라이싱을 하면 되는 간단한 문제이다.commands에서 i,j,k를 반복문으로 받아서sliced변수에 array를 슬라이싱한 배열을 넣는다. 이때 i는 1-based index이므로 [i-1:j]로 슬라이싱한다.sort() 함수로 sliced 배열을 정렬한다.리스트 초기화 된 answer에 sliced 배열의 k번째 값을 append()로 추가한다.k..

[프로그래머스] [스택/큐] Lv.2 /주식가격 (파이썬/Python)

1. 문제 설명2. 코드 def solution(prices):     answer = []     for i in range(len(prices)):         count = 0         for j in range(i+1,len(prices)):             if prices[i]                 count += 1             else:                 count += 1                 break         answer.append(count)     return answer3. 풀이 과정초 단위를 기록할 answer를 빈 리스트로 초기화한다.prices의 길이의 범위를 i로 받아서 반복한다.횟수 count를 0으로 초기화한다.이후..

[프로그래머스] [스택/큐] Lv.2 /다리를 지나는 트럭 (파이썬/Python)

1. 문제 설명2. 코드 from collections import dequedef solution(priorities, location):    queue = deque([(p, idx) for idx, p in enumerate(priorities)])    count = 0        while queue:        current = queue.popleft()        if any(x[0] > current[0] for x in queue):            queue.append(current)        else:            count += 1            if current[1] == location:                return count3. 풀이 ..

[프로그래머스] [스택/큐] Lv.2 /올바른 괄호 (파이썬/Python)

1. 문제 설명2. 코드 def solution(s):     stack=[]     for char in s:         if char == '(':             stack.append(char)         elif char == ')':             if not stack:                 return False             stack.pop()     return len(stack) == 03. 풀이 과정stack을 빈 리스트로 초기화한다.s의 문자를 char로 받는다.char이 '('이면 append()로 char를 stack에 추가한다.char이 ')'일 때 stack이 비어 있으면 False를 반환하고 아니면 pop()으로 stack 안에 있는 '..