본문 바로가기

Algorithm/프로그래머스101

[프로그래머스] 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.
[프로그래머스] 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.
[프로그래머스] Lv2 - 다음 큰 숫자 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12911 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr def solution(n): cnt = bin(n)[2:].count('1') result = 0 for x in range(n+1, 1000001): if bin(x)[2:].count('1') == cnt: result = x break return result 풀이 1. n을 2진수로 바꾸고 1의 개수를 cnt에 기록 2... 2022. 5. 14.
[프로그래머스] Lv2 - 올바른 괄호 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr def solution(s): stack = [] for target in s: if target == ')' and stack and stack[-1] == '(': stack.pop() else: stack.append(target) return True if not stack else False 자료구조, 스택 .. 2022. 5. 14.