♟️ 알고리즘/알고리즘_프로그래머스 12

[Python][프로그래머스] 수식 최대화 / 완전탐색, 구현(Lv2)

🖇️ 링크  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr🗒️ 파이썬 코드 풀이from itertools import permutationsdef solution(expression): answer = 0 # 피연산자(operand) - 연산자(operator) 분리 operator = [] lst_expression = list(expression) for idx,op in enumerate(lst_expression): if op in '+-*': operator.append(op) lst_expression[id..

[Python][프로그래머스] 사칙연산 / DP (Lv4)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/1843 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr🗒️ 파이썬 코드 풀이def solution(arr): # 연산자와 숫자 분리 operator, number = [], [] for i in range(len(arr)): if i % 2 == 1: operator.append(arr[i]) else : number.append(arr[i]) number = list(map(int,number))..

[Python][프로그래머스] 아이템 줍기 / BFS (Lv3)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 🙌 내 풀이 과정🗒️ 파이썬 코드 풀이from collections import dequedef solution(rectangle, characterX, characterY, itemX, itemY): # 좌표 생성 (110,110) SIZE = 110 axis = [[-1] * SIZE for _ in range(SIZE)] # 좌표 2배씩 확장 for i in range(len(re..

[Python][프로그래머스] N으로 표현 / DP (Lv3)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr🗒️ 파이썬 코드 풀이def solution(N, number): answer = 0 dp = [set() for _ in range(9)] dp[1].add(N) if number == N : return 1 for p in range(2,9): dp[p].add(int(str(N) * p)) for i in range(1,p): ..

[Python][프로그래머스] 등굣길 / DP (Lv3)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr🗒️ 파이썬 코드 풀이def solution(m, n, puddles): answer = 0 dp = [[0] * (m+1) for _ in range(n+1)] puddles = [[q,p] for p,q in puddles] for i in range(1,n+1): for j in range(1,m+1): if i == j == 1: ..

[MySQL][프로그래머스] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 / (Lv4)

https://school.programmers.co.kr/learn/courses/30/lessons/157339🗒️SQL 코드 풀이 # 자동차 종류 : 세단 or SUV / 2022년 11월 1일 ~ 11월 30일 / 대여 금액 50만원 ~ 200만원 # 자동차 ID / 자동차 종류 / 대여 금액 # 대여 금액(FEE) 기준 내림차순 정렬 / 자동차 종류 오름차순 / 자동차 ID 내림차순SELECT C.CAR_ID, C.CAR_TYPE, ROUND(DAILY_FEE*30*((100-D_P.DISCOUNT_RATE)/100),0) FEE FROM CAR_RENTAL_COMPANY_CAR C LEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY R..

[Python][프로그래머스] 가장 큰 수 / 정렬 (Lv2)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42746#🗒️ 파이썬 코드 풀이def solution(numbers): lst = list(map(str,numbers)) lst = sorted(lst, key=lambda x:x*3, reverse=True) answer = str(int(''.join(lst))) return answer 시간 복잡도 O( N·Log N)  1. 해당 문제에서 일반 정렬을 하면 안된다. [3, 30, 34, 5, 9]일반 정렬을 할 경우, [9, 5, 34, 30, 3] 이 되는데, 이거를 합쳐도 최대 값이 나오지 않는다.   2. 이 문제의 목표는 저런 배열이 ..

[Python][프로그래머스] 전화번호 목록 / 해시,정렬 (Lv2)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42577🗒️ 파이썬 코드 풀이 1def solution(phone_book): answer = True phone_book.sort() for i in range(len(phone_book)-1): if phone_book[i+1].startswith(phone_book[i]): return False return answer 1. phone_book이 문자열임에 주목하여 sort를 해준다.  2. startswith 함수로 현재 번호와 다음 번호를 비교해준다.문자열 크기대로 정렬했으므로 접두사 중복 무조건 체크 가능중복되는 부분은 ..

[Python][프로그래머스] 프로세스 / 스택, (Lv2)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42587🗒️ 파이썬 코드 풀이def solution(priorities, location): queue = [(i,p) for i,p in enumerate(priorities)] answer = 0 while True : cur = queue.pop(0) if any(cur[1]  시간 복잡도 O( N² ) 1. deque 라이브러리 없이 풀이한 코드이다. deque를 안써도 되기는 하지만 pop(0)의 시간복잡도는 O(N)pop()의 시각복잡도는 O(1) 지금은 pop(0)을 써도 큰 상관은 없어서 쓰지만, 문제 생길 경우 deqeu..