코테 공부/프로그래머스 59

[Python/스택, 큐] 기능개발

문제 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 입출력 예 progresses speeds return [93, 30, 55] [1, 30, 5] [2, 1] [95, 90, 99, 99, 80, 99] [1, 1, ..

[Python/BFS] 타겟넘버

문제 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 입출력 예 numbers target return [1, 1, 1, 1, 1] 3 5 [4, 1, 2, 1] 4 2 풀이 1. BFS임 ( 1..

[Python/Heap] 이중우선순위큐

문제 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어 수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 입출력 예 operations return ["I 16", "I -5643", "D -1", "D 1", "D 1", "I 123", "D -1"] [0,0] ["I -45", "I 653", "D 1", "I -642", "I 45", "I 97", "D 1", "D -1", "I ..

[Python/완전탐색] 카펫

문제 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 입출력 예 brown yellow return 10 2 [4, 3] 8 1 [3, 3] 24 24 [8, 6] 풀이 yellow의 약수 def solution(brown, yellow): answer = [] for i ..

[Python] 행렬의 덧셈

문제 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 입출력 예시 arr1 arr2 return [[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]] [[1],[2]] [[3],[4]] [[4],[6]] 풀이 1) numpy 이용 import numpy as np def solution(arr1, arr2): np_arr1 = np.array(arr1) np_arr2 = np.array(arr2) sum_arr = np_arr1 + np_arr2 return sum_arr.tolist() 2) 행: len(arr) 열:..

[Python] 신고 결과 받기

https://programmers.co.kr/learn/courses/30/lessons/92334 핵심) 1. 유저가 어떤 사람을 신고했는지 2. 유저가 몇 번 신고를 당했는지 Dictionary를 사용. (매칭되는 두 가지 값을 한 번에 저장하고 싶을 때) 첫번째 dictionary는 유저별 신고id를 저장. 두번째 dictionary는 유저별 신고당한 횟수를 저장 아이디어) 중복 신고 제거 -> set 사용 def solution(id_list, report,k): answer = [] report = list(set(report)) # 중복 신고 제거 user = defaultdict(set) # user별 신고한 id 저장 cnt = defaultdict(int) # user별 신고당한 횟수 ..

[Python] 가장 큰 수(어려웠음)

주어진 정수를 이어붙여 만들 수 있는 가장 큰 수 return * 앞에서부터 값을 비교해야함 (3이 30보다 먼저 나와야함) 따라서 아래 코드는 0534303이 return 되므로 틀렸음 def solution(numbers): num = [] num = list(map(str, numbers)) answer = '' max = '' temp = '' for i in range(len(num)-1): for j in range(i+1,len(num)): if num[i][0] > num[j][0]: temp = num[i] num[i] = num[j] num[j] = temp if num[i][0] == num[j][0]: num[i:j].sort() print(num) num.reverse() prin..

[Python] 정렬/k번째 수

문제: 배열 array를 2차원 배열 commands를 기준으로 i번째 숫자부터 j번째 숫자까지 자르고 정렬한 후, k번째 수를 구하려고 함 * 1번째 수는 array[0]임 * TypeError: 'int' object is not iterable 오류/ int 값은 쪼갤 수 없는 단일 객체이기 때문에, 문자열, 튜플, 딕셔너리와 다르게 iterable하지 않다. 내 답안: def solution(array, commands): for i in range(0,len(array)): #숫자열 list -> 문자열 list(iterable하게 하기 위함) array[i] = str(array[i]) temp = [] answer = [] for i in range(len(commands)): if comm..

[Python/해시] 완주하지 못한 선수

문제: 한 명의 선수를 제외하고 모든 선수 마라톤 완주. 참여한 선수가 담긴 배열 participant, 완주한 선수가 담긴 배열 completion -> 완주하지 못한 선수의 이름을 return하는 solution 함수를 작성하라 * 동명이인이 있을 수 있음 -> 집합 사용 불가 내 답안 def solution(participant, completion): participant.sort() completion.sort() for p, c in zip(participant, completion): if p != c: #동명이인이 있는 경우 return p return participant[-1] #동명이인이 없는 경우 * sort() 함수: a= [c,b,a] a.sort() a= [a,b,c] * zi..