Stack/Coding test
[C# / Lv2] 주식 가격
Seo_re:
2022. 2. 26. 13:56
반응형
풀이 코드
using System;
using System.Collections.Generic;
public class Solution {
public int[] solution(int[] prices) {
List<int> list = new List<int>(prices.Length);
for(int i = 0; i < prices.Length; i++)
{
list.Add(GetSeconds(prices, i));
}
return list.ToArray();
}
private int GetSeconds(int[] prices, int startIndex)
{
int returnValue = 0;
for(int j = startIndex + 1; j < prices.Length; j++, returnValue++)
{
if(prices[startIndex] > prices[j])
{
returnValue++;
break;
}
}
return returnValue;
}
}
기타
- 이 문제가 왜 스택/큐와 관련이 있는지 잘 모르겠다. 스택을 사용한사람 풀이를 봐도 이걸 이렇게까지 해서 스택을 사용해야 싶기도 하고..
- 바로 직전에 푼 '다리를 지나는 트럭' 문제하고 난이도 차가 너무 나서 풀면서도 의심스러웠다.
- 결국 가독성 좋고, 간단하게 작성하는 법을 선택했는데, 스택/큐에 정신이 사로잡혀서 list를 사용하는 실수를 저질렀다.
- 그냥 배열로 사용해서 'if(prices[startIndex] > prices[j])' 조건문에서 배열 원소에 증가연산자 사용하면 결과 반환할 때, array 변환도 안해도 되고 가독성도 좀 더 올라갔을것 같다. (효율성 테스트에서도 list 사용 여부에 따라 1ms 차이가 났다.)
반응형