프로그래머스를 처음 시작한 날 프로그래머스 내부에 있는 테스트를 봤다.

level 1은 간단했지만 level 2는 한 문제에 60분을 쏟아부었음에도 풀지 못했다.

그 후 '완주하지 못한 선수' 문제에서도 효율성이라는 이름의 고배를 마신 후 많은 고민을 하였다.

고민에 대한 결과는 그래도 어려운 것을 고민하면서 실력을 키우자라는 생각으로 level 2를 도전했다.

첫 번째 문제는 주식가격이었다.

결과는 첫 번째 시도만에 성공.

코드는 다음과 같다.

int* solution(int prices[], size_t prices_len) {
     // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.

     int count = 0;

     int* answer = (int*)malloc(sizeof(int) * prices_len);

     for (int i = 0; i < prices_len - 1; i++)
     {
          for (int j = i + 1; j < prices_len; j++)
          {
          count++;

               if (prices[i] <= prices[j]) continue;

               break;
          }

     answer[i] = count;
     count = 0;
     if (i == prices_len - 2)
          answer[i + 1] = 0;
     }

     return answer;
}

간단하게 2중 for문을 통해 prices[i]의 값보다 작을 때 혹은 for문 끝까지 갔을 때 앞에서 더해준 count의 값을 answer에 넣어준다.

그 후 끝은 어떻게든 0이 나오니 마지막에 0을 넣어주고 반환한다.

2중 for문을 돌렸음에도 효율성까지 모두 통과했다.

'완주하지 못한 선수'는 도대체 어떻게 했어야 했을까....

다음에 다시 도전해봐야겠다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기