Python/코테 문제 풀이

문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요..
문제 설명 프로그래머스 문제 설명 참고 작성한 코드 def solution(n, words): for i in range(1, len(words)): if(len(words[i])==1 or words[i-1].strip()[-1]!=words[i].strip()[0] or words[i] in words[:i]): return [int(i%n)+1,int(i/n)+1] return [0, 0]
문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 작성한 코드 def solution(brown, yellow): w = 1 for i in range(1, yellow+1): if(yellow%i==0): if(brown==2*(i+yellow/i)+4): w =..
문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 작성한 코드 def solution(s): if(len(s)%2==1): return 0 stack = [] for i in range(len(s)): if(stack==[]): stack.append(s[i]) else: if(stack[-1]==s..
문제 설명 달리기 경주 하는데 선수가 추월할 때마다 해당 선수의 이름을 호명한다. 선수 이름이 있는 문자열 배열과 호명된 이름이 있는 배열이 주어졌을 때, 경기가 끝난 후 최종 순위를 출력하라. 내가 작성한 코드 처음 생각했을 땐 이중for문 아니면 swap을 사용하면 되겠다 싶어서 간단히 swap으로 작성했다. def solution(players, callings): for name in callings: idx = players.index(name) players[idx-1], players[idx] = players[idx], players[idx-1] return players 그런데 채점 결과, 정확성은 높지만 시간초과 때문에 오답이 떴다. (최대 연산량이 50,000 x 1,000,000이니..
VennieLee
'Python/코테 문제 풀이' 카테고리의 글 목록