전체 글

알고리즘

[프로그래머스 / Python] 추억 점수

https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(name, yearning, photo): answer = [] for p in photo: sum = 0 for j in range(len(p)): if p[j] in name: index = name.index(p[j]) sum += yearning[index] answer.append(sum) return answer

알고리즘

[프로그래머스 / Python] 대충만든자판

def solution(keymap, targets): answer = [] for target in targets: times = 0 for alpha in target: time = 101 flag = False for key in keymap: if alpha in key: time = min(key.index(alpha)+1, time) flag = True if flag == False: times = -1 break times += time answer.append(times) return answer

알고리즘

[프로그래머스 / Python] 과일 장수

프로그래머스 과일장수 🪄 코드 def solution(k, m, score): # 과일 장수가 얻을 수 최대 이익 answer = 0 # 사과의 점수 역순 정렬 score = sorted(score, reverse=True) for i in range(0, len(score), m): # range(start, end, step) box = score[i:i+m] # box의 크기 확인 후 상자의 가격 계산 if len(box) == m: answer += min(box) * m return answer

알고리즘

[BOJ / Python] 11722 가장 긴 감소하는 부분 수열

😈 문제 설명 https://www.acmicpc.net/problem/11722 🔐 문제 풀이 1️⃣ 부분 수열의 최소 길이는 1 이므로 dp 배열을 수열의 크기 만큼 1로 초기화한다. dp = [1] * n 2️⃣ 수열에 담긴 숫자를 하나씩 꺼내 앞에 있는 숫자들을 모두 탐색하게 한다. 그러다가 큰 수를 발견하게 된다면 부분 수열이 존재하는 것 이므로 dp 배열의 값을 업데이트한다. (앞에 있는 수의 수열 길이 + 1과 현재 dp 값을 비교한 뒤 큰 값으로 업데이트) for i in range(1, n): for j in range(i): if data[j] > data[i]: dp[i] = max(dp[j] + 1, dp[i]) 3️⃣ dp 배열에서 가장 큰 값이 가장 긴 감소하는 부분 수열의 길이..

알고리즘

[BOJ / Python] 2193 이친수

🔑 문제 https://www.acmicpc.net/problem/2193 🔐 풀이 방법 dp를 이용해서 풀자 ! 🤹 점화식 구하기 1: 1 -> 1가지 방법 2: 10 -> 1가지 방법 3: 100 101 -> 2가지 방법 4: 1010 1001 1000 -> 3가지 방법 5: 1000 10101 10100 10010 10001 -> 5가지 방법 … … … 전 단계의 이친수 개수와 전전단계의 이친수 개수를 합하면 현재 단계의 이친수가 나온다. dp[i] = dp[i - 1] + dp[i - 2] 👑 전체 코드 # https://www.acmicpc.net/problem/2193 # 이친수 import sys input = sys.stdin.readline n = int(input()) dp = [0] ..

알고리즘

[BOJ / Python] 2579 계단 오르기

1️⃣ 문제 설명 https://www.acmicpc.net/problem/2579 2️⃣ 문제 풀이 이 문제는 dp 문제이다. 점화식을 찾아보자 but 계단에 크기가 2개 이하인 경우는 점화식을 이용할 수 없어, 따로 처리해줘야할 것 같다. 3️⃣ 코드 # https://www.acmicpc.net/problem/2579 # 계단 오르기 import sys input = sys.stdin.readline N = int(input()) stairs = [int(input()) for _ in range(N)] dp = [0] * N if N

허지렁이
Read me