Computer science/Algorithm

프로그래머스의 레벨 2 문제 혼자 놀기의 달인 문제 요구 조건 상자 안에 들어있는 카드 번호가 순서대로 담긴 배열 cards가 매개변수로 주어질 때, 얻을 수 있는 최고 점수를 구해서 return 하도록 solution 함수를 완성해야 한다. 풀이 생각 과정 전제 조건 문제의 제한 사항이 널널했기 때문에 간단하게 생각하여 풀 수 있었다. 과정 그룹을 분리하고 길이가 가장 긴 그룹 2개를 곱한게 최고 점수 그룹을 분리하기 위해서 방문했던 것들을 기록해야함 방문한 것들을 제외하고 순회해야함 방문한 것은 방문했다고 체크, 더이상 방문할 곳이 없으면 그룹 길이 저장 def solution(cards): visit = [False] * len(cards) group = [] for i in range(len(ca..
프로그래머스의 레벨 2 문제 최솟값 만들기 문제 요구 조건 두 리스트에서 원소 하나씩을 꺼내 곱한 값을 모두 더했을 때, 최소가 되는 값을 구해야 한다. 풀이 방법 a에서 가장 작은 수 순서대로, b에서 가장 큰 수 순서대로 곱하면 그게 최소다. def solution(A,B): answer = 0 A.sort() B.sort(reverse=True) for i in range(len(A)): answer += A[i]*B[i] return answer
프로그래머스의 레벨 2 문제 하노이의 탑 문제 요구 조건 큰 원판이 작은 원판 위에 올 수 없는 규칙에 맞춰 원판을 옮겨야 한다. 풀이 방법 가장 큰 원판 위의 n-1개의 원판들을 임시 기둥으로 옮긴다. 가장 큰 원판을 목표 기둥으로 옮긴다. 임시 기둥의 원판들을 같은 방법으로 목표 기둥으로 옮긴다. 위의 방법을 재귀호출해서 해결했다. # n-1개의 원판들을 임시 기둥으로 옮기고 # 가장 큰 원판을 목표 기둥으로 옮긴 후에 # 임시 기둥의 원판들을 목표 기둥으로 옮기자 answer = [] def hanoi(n, from_, to): global answer if n == 1: answer.append([from_, to]) return None for i in range(1, 4): if i not i..
프로그래머스의 레벨 2 문제 올바른 괄호 문제 요구 조건 괄호의 짝이 잘 맞는지 확인한다. 풀이 방법 여는 괄호를 스택에 저장하면서 닫는 괄호를 만나면 스택에서 제거하는 방식으로 짝을 구성한다. # (는 스택에 넣고, )를 만나면 스택을 빼는데, 스택을 뺄때 (이 아니라면 에러다. def solution(s): stack = [] for c in s: if c == "(": stack.append(c) else: if len(stack) < 1: return False if stack.pop() != "(": return False return len(stack) == 0
프로그래머스의 레벨 2 문제 기능개발 문제 요구 조건 리스트의 가장 앞에 있는 원소가 100을 넘었을 때, 뒤의 원소가 몇개나 100을 넘겼는지 확인해야 한다. 풀이 방법 리스트의 범위가 작아서 리스트의 모든 원소에 값을 더해주면서 했다. 만약 리스트의 범위가 크다면 총 작업 일수를 저장해서 진도율에 곱해주면 더하는 반복을 없앨 수 있다. # 작업 목록이 빌 때 까지 반복하는데 # 가장 앞에 있는 작업이 며칠 걸리는지 세고, 그만큼 진도율을 더해준다. # 진도율이 100을 넘으면 카운트하고 다음 작업 목록으로 간다 # 안넘으면 그 앞까지 작업 목록을 뺀다. 이걸 반복한다. import math def solution(progresses, speeds): answer = [] while len(progre..
프로그래머스의 레벨 2 문제 의상 문제 요구 조건 의상을 착용하는 조합의 수를 구한다. 풀이 방법 의상 종류별로 몇 개인지 세고, 각 의상을 사용하지 않는 경우를 포함해서 조합을 구한다. 조합에서 아무것도 안 입는 경우 1을 뺀다. # 해시로 옷 종류별로 저장한다 # 각 종류별로 입기+안입기로 곱하고, 아무것도 안입는 경우 1을 뺀다 def solution(clothes): answer = 1 d = {} for _, category in clothes: d[category] = d.get(category, 0) + 1 for category in d: answer *= (d[category] + 1) return answer - 1 해결 못했던 풀이 방법 의상 종류를 가지고 조합을 만들어서 의상 1개 ..
도_유
'Computer science/Algorithm' 카테고리의 글 목록