전체 글
[프로그래머스] 구명보트
📌문제 https://programmers.co.kr/learn/courses/30/lessons/42885 🎖️난이도 Level 2 ✔️풀이 # sol def solution(people, limit): people.sort() cnt = 0 l = len(people) tmp_limit = limit p = 0 # 타고 있는 사람 수 (최대 2명) for i in range(l): tmp_person = people[i] if tmp_limit >= tmp_person and p < 2: tmp_limit -= tmp_person p += 1 continue cnt += 1 tmp_limit = limit - tmp_person p = 1 return cnt + 1
[프로그래머스] 큰 수 만들기
📌문제 https://programmers.co.kr/learn/courses/30/lessons/42883 🎖️난이도 Level 2 ✔️풀이 # sol def solution(number, k): num_l = len(number) l = num_l - k answer = ['0' for _ in range(l)] i = 0 for x in range(l): if i == k+x : answer[x:] = number[i:] return ''.join(answer) tmp_list = number[i:k+x+1] # tmp_max = max(tmp_list) ==> 테스트케이스 10번 시간초과 오류! # tmp_max 구하기 tmp_max = '0' for m in tmp_list: # '9'보다 큰 ..
[프로그래머스] 체육복
📌문제 https://programmers.co.kr/learn/courses/30/lessons/42862 🎖️난이도 Level 1 ✔️풀이 # sol1) set()이용, 빌려준 사람인 reserve를 제거해가기 def solution(n, lost, reserve): intersection = set(lost) & set(reserve) lost_set = set(lost) - intersection reserve_set = set(reserve) - intersection ok = 0 for l in lost_set: if reserve_set == {}: break if l-1 in reserve_set: ok += 1 reserve_set.remove(l-1) elif l+1 in reserve..
[프로그래머스] 도둑질
📌문제 https://programmers.co.kr/learn/courses/30/lessons/42897 🎖️난이도 Level 4 ✔️풀이 # sol1 def solution(money): # 1. 첫 집을 무조건 터는 경우 (dp1) (마지막 집은 안 털음) dp1 = [0] * len(money) dp1[0] = money[0] # 집이 1개일 때 dp1[1] = max(money[0], money[1]) # 집이 2개 일 때 for i in range(2, len(money)-1): # 집이 3개 이상일 때 dp1[i] = max(dp1[i-1], money[i]+dp1[i-2]) # 2. 마지막 집을 무조건 터는 경우 (dp2) (첫 집은 안 털음) dp2 = [0] * len(money) d..
[프로그래머스] 등굣길
📌문제 https://programmers.co.kr/learn/courses/30/lessons/42898 🎖️난이도 Level 3 ✔️풀이 # sol def solution(m, n, puddles): grid = [[0]*(m+1) for _ in range(n+1)] # 테두리 하나 더 추가해서 0으로 채워두기 # 테두리랑 puddle들 따로 처리하지 말고 한번에 처리하기! (puddle도 -1말고 0으로 처리) for i in range(1, n+1): for j in range(1, m+1): if i == 1 and j == 1: grid[i][j] = 1 continue elif [j, i] in puddles: continue grid[i][j] = grid[i-1][j] + grid[i..
[프로그래머스] 정수 삼각형
📌문제 https://programmers.co.kr/learn/courses/30/lessons/43105 🎖️난이도 Level 3 ✔️풀이 # sol1 def solution(triangle): i_len = len(triangle) # 5 for i in range(1, i_len): for j in range(i+1): # i++ if j == 0: triangle[i][j] += triangle[i-1][0] continue # i++, j++ elif i == j: triangle[i][j] += triangle[i-1][j-1] continue # i++ or i++, j++ triangle[i][j] = max(triangle[i-1][j-1]+triangle[i][j], triangle[..
[프로그래머스] N으로 표현
📌문제 https://programmers.co.kr/learn/courses/30/lessons/42895 🎖️난이도 Level 3 ✔️풀이 # sol def solution(N,number): answer=-1 S=[set() for x in range(8)] for i,x in enumerate(S,start=1): x.add(int(str(N)*i)) for i in range(1,len(S)): for j in range(i): for op1 in S[j]: for op2 in S[i-j-1]: S[i].add(op1+op2) S[i].add(op1-op2) S[i].add(op1*op2) if op2!=0: S[i].add(op1//op2) if number in S[i]: answer=i+1..
[프로그래머스] 가장 큰 수
📌문제 https://programmers.co.kr/learn/courses/30/lessons/42746 🎖️난이도 Level 2 ✔️풀이 # sol def solution(numbers): numbers = list(map(str, numbers)) numbers.sort(key = lambda x : x*3, reverse=True) return str(int(''.join(numbers)))
[프로그래머스] K번째수
📌문제 https://programmers.co.kr/learn/courses/30/lessons/42748 🎖️난이도 Level 1 ✔️풀이 # sol1 def solution(array, commands): answer = [] for command in commands: arr_tmp = array arr_tmp = arr_tmp[command[0]-1:command[1]] arr_tmp.sort() answer.append(arr_tmp[command[2]-1]) return answer # sol2) lambda def solution(array, commands): return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands)) ..
[프로그래머스] 더 맵게
📌문제 https://programmers.co.kr/learn/courses/30/lessons/42626 🎖️난이도 Level 2 ✔️풀이 # sol) heapq 이용 import heapq def solution(scoville, K): cnt = 0 heapq.heapify(scoville) ''' s_list = [] for s in scoville: heapq.heappush(s_list, s) ''' while 1: if len(scoville) == 1 and scoville[0] = K: return cnt else: cnt += 1 heapq.heappush(scoville, heapq.heappop(scoville) + heap..