목록Algorithms/programmers (43)
습관처럼
주식가격 문제: 초 단위로 기록된 주식가격이 담긴 배열 prices을 토대로 가격이 떨어지지 않은 기간은 몇 초인지를 출력 접근방식: 1초 부터 n-1초까지의 가격 상승 및 유지된 시간을 파악 마지막 시간은 0초로 픽스 시킨다. 문제에서 주어진 테스트 케이스를 먼저 살펴보자. [1, 2, 3, 2, 3]이 prices로 주어진다. 1초 시점의 1원은 끝까지 가격이 떨어지지 않았다. 즉, 가격이 떨어지지 않은 기간은 4초이다. 2초 시점의 2원도 끝까지 가격이 떨어지지 않았다. 가격이 떨어지지 않은 기간은 3초이다. 3초 시점의 3원은 1초 후 가격이 2원으로 떨어졌다. 따라서 가격이 떨어지지 않은 시간은 1초이다. 4초 시점의 2원은 끝까지 가격이 떨어지지 않았다. 가격이 떨어지지 않은 기간은 1초이다...
스킬트리 문제: 유저의 스킬트리중 가능하지 않은 스킬트리를 제외하고 가능한 스킬트리의 개수를 구하다 접근 방식: 유저의 스킬트리중 규칙에 해당되지 않는 스킬트리를 제외하고 규칙을 따라야 하는 스킬만을 추려서 순서를 확인한다. 다음 순서가 맞는지 확인. 나의 풀이 def solution(skill, skill_trees): answer = 0 result=[] for idx,i in enumerate(skill_trees): result=[] for user_skill in i:#유저의 스킬에서 지켜야할 스킬트리의 스킬을 가지고 있는 경우 파악 if user_skill in skill: result.append(skill.index(user_skill))#가지고 있다면 오리지널 스킬순서 추가 set(res..
쇠막대기 문제: 레이저로 쇠막대기를 자를때 생성되는 쇠막대기의 총 개수를 출력하시오 접근 방법: 레이저 포인트의 위치를 리스트에 파악하고 자를때 현재 레이저 위치에 걸쳐있는 스택의 개수만큼 새로 생성된다. def solution(arrangement): answer = 0 pipe=[] laser = 0 for idx,i in enumerate(arrangement): if i == '(': laser=1 pipe.append(i) else: if laser==1: pipe.pop() answer += len(pipe)#레이저로인해 잘린 앞의 쇠파이프 개수 laser=0#레이저 포인트 체크 else: pipe.pop() #파이프의 끝부분 제거 answer+=1 #파이프이 끝부분으로 인해 생성된 쇠파이프 ..