본문 바로가기

Algorithm245

[프로그래머스] Lv2 - 피보나치 수 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12945 코딩테스트 연습 - 피보나치 수 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = programmers.co.kr def solution(n): dp = [0 for _ in range(n+1)] dp[1] = 1 for i in range(2,n+1): dp[i] = dp[i-2]+dp[i-1] re.. 2022. 5. 17.
[프로그래머스] Lv2 - 최솟값 만들기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12941 코딩테스트 연습 - 최솟값 만들기 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱 programmers.co.kr def solution(A, B): N = len(A) A.sort() B.sort(reverse=True) result = 0 for i in range(N): result += A[i]*B[i] return result 그리디 1. A는 오름차순, B는 내림차순 정렬 2. 앞에서부터 곱한 값을 result에 더한다. 3. result 출력 2022. 5. 17.
[프로그래머스] Lv2 - 최댓값과 최솟값 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12939 코딩테스트 연습 - 최댓값과 최솟값 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를 programmers.co.kr def solution(s): arr = list(map(int, s.split())) return str(min(arr))+' '+str(max(arr)) 풀이 1. 리스트로 바꿔준다 2. 최솟값과 최댓값을 공백 문자를 두고 문자열로 연결한 값을 반환 2022. 5. 17.
[프로그래머스] Lv2 - 숫자의 표현 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr def solution(n): i, j = 1, 2 sum = 1 result = 0 while i != j: if sum < n: sum += j j += 1 else: if sum == n: result += 1 sum -= i i += 1 return result 투포인터 1. i, j, sum, result = 1, 2, 1, 0 초기.. 2022. 5. 17.
[백준] 7662번 - 이중 우선순위 큐 (파이썬) # 이중 우선순위 큐 import heapq T = int(input()) for _ in range(T): N = int(input()) min_heap = [] max_heap = [] visited = [False] * N for idx in range(N): order, data = input().split() data = int(data) if order == 'I': heapq.heappush(min_heap, (data, idx)) heapq.heappush(max_heap, (-data, idx)) visited[idx] = True elif order == 'D': if data == 1: while max_heap and not visited[max_heap[0][1]]: heapq.h.. 2022. 5. 17.
[백준] 2109번 - 순회강연 (파이썬) # 순회강연 import sys input = sys.stdin.readline N = int(input()) info = [] max_day = 0 for _ in range(N): pay, day = map(int, input().split()) max_day = max(max_day, day) info.append((day, pay)) info.sort(key=lambda i: (i[1], i[0])) possible = [True for i in range(max_day+1)] result = 0 for _ in range(N): day, pay = info.pop() for d in range(day, 0, -1): if possible[d]: possible[d] = False result +.. 2022. 5. 15.
[프로그래머스] Lv2 - 땅따먹기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12913 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr def solution(land): N, M = len(land), len(land[0]) dp = [[0 for _ in range(M)] for _ in range(N)] for j in range(M): dp[0][j] = land[0][j] for i in range(1, N): for j in range(M): dp[i][j] = m.. 2022. 5. 14.