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 차이가 났다.)

 

 

 

 

반응형