[구명보트]
My answer
def solution(people, limit):
answer = 0
people.sort()
while(people!=[]):
#wmin=min(people)
wmin=people[0]
#wmax=max(people)
wmax=people[-1]
if(wmin+wmax<=limit):
answer+=1
if(len(people)>1):
people=people[1:-1]
#people.remove(wmin)
#people.remove(wmax)
else:
people=people[1:]
#people.remove(wmin)
else:
answer+=1
people=people[:-1]
#people.remove(wmax)
return answer
-------------------------------------------------------
def solution(people, limit):
answer,tmin, tmax = 0, 0, len(people)-1
people.sort() # 몸무게 순으로 정렬하기
while(tmin<=tmax): # 모든 사람을 다 옮길때까지
if(people[tmin]+people[tmax]<=limit):
#제일 몸무게가 낮은사람이랑 큰사람이랑 옮겨지면 둘다 옮기고 안되면 젤 큰사람 혼자 옮긴다.
# 젤 큰사람은 limit이 걸리든 안걸리든 무조건 계속 옮김
tmin+=1
tmax-=1
answer+=1
return answer
더보기
이번 문제는 문제 풀이 자체는 쉽게했는데, 계속 시간 초과가 떠서 어떻게든 시간을 줄이려고 노력했다. 이 문제는 탐욕법 문제로 매 결과 최선을 선택해야하므로 젤 작은 애랑 큰애랑을 더하면서 결과를 도출해낸다. 아래 링크는 자주 쓰는 함수들의 시간복잡도를 가져온 것이다... https://wayhome25.github.io/python/2017/06/14/time-complexity/
[주식가격]
My answer
def solution(prices):
answer = []
cnt=0
for i in range(len(prices)):
for j in range(i+1,len(prices)):
cnt+=1
if(prices[j]<prices[i]):
break
answer.append(cnt)
cnt=0
return answer
[영어 끝말잇기]-[Summer/Winter Coding(~2018)]
My answer
def solution(n, words):
answer = [0,0]
used= []
for i in words:
if(used==[]):
used.append(i)
elif(i not in used and used[-1][-1]==i[0] and len(i)!=1):
used.append(i)
else: # 걸렸을 때
answer[0]=len(used)%n+1 #
answer[1]=len(used)//n+1
break
return answer
Another answer
def solution(n, words):
for p in range(1, len(words)):
if words[p][0] != words[p-1][-1] or words[p] in words[:p]: return [(p%n)+1, (p//n)+1]
else:
return [0,0]
728x90
반응형