Temp

20210204, 프로그래머스 문제 - 스택/큐

ezn 2021. 2. 8. 01:25

프로그래머스 스택/큐 #1

풀이 (진혁)

  • 사진 생략

코드 및 알고리즘 해설

  1. 주식가격의 상태를 추적하는 것이므로 i로 피벗을 지정한다.
  2. j는 원소를 지나가면서 주식가격이 떨어지는 경우 증가한 카운트를 중단하고 배열에 반환한다.

프로그래머스 스택/큐 #2

풀이 (진혁)

 

코드 및 알고리즘 해설

  1. 프로젝트 진척도 progresses[]에서 남은 프로젝트 양을 구한다.
  2. 각 원소 위치에 맞춰 작업 속도 speed[]를 반영해 남은 일수를 구해 progresses[]에 반영한다 (재활용)
  3. 피벗을 start로 정하고 end로 인덱스를 밀어간다.
  4. 남은 일수가 피벗보다 작은 경우 프로젝트가 반환되는 갯수를 answer에 반환한다.
  5. 피벗을 end+1에 다시 반영해 인덱스를 밀어간다.

프로그래머스 정렬 #1

풀이 (민철)

 

코드 및 알고리즘 해설

  1. commands 원소를 각 i,j,k로 뜯어 각각 split의 시작부분, 끝부분 그리고 split된 배열에서 찾아낼 인덱스로 설정한다.
  2. 인덱싱한 원소를 answer에 반환한다.

프로그래머스 정렬 #2

풀이 (진혁)

 

1차 시도 코드 및 알고리즘 : 삽입정렬을 사용한 풀이

  1. 삽입정렬의 알고리즘을 활용하되 string으로 반환한 원소를 join하여 우위를 비교해 원소를 정렬한다.
  2. 테스트 케이스는 통과하나 채점에서 시간초과로 사용 불가능

2차 시도 코드 및 알고리즘 : 순열을 사용한 풀이

  1. 중복을 허용하는 조합(순열)을 사용하여 모든 원소에서 나올 수 있는 조합의 목록을 구한다
  2. sort()로 내림차순하여 가장 큰 수를 반환한다.
  3. 테스트 케이스는 통과하나 채점에서 시간초과로 사용 불가능

3차 시도 코드 및 알고리즘 : 거꾸로된 Radix 정렬의 풀이 (작업중)

  1. 원소의 수에서 가장 앞자리 수를 가지고 카테고리를 만든다.

numbers = [9,5,94,939,30,3,300] number_dictionary = {'9':[9,94,939], '5':[5], '3':[30,3,300]}

  1. 만들어진 dictionary를 순회하며 리스트를 1의 자리부터 큰 수로 정렬한다 → 거꾸로된 Radix 정렬
  2. 정렬된 원소를 string으로 join한다
  3. 원소가 모두 0인 경우 조합을 시도하지 않고 0으로 반환한다. → 예외처리