프로그래머스를 처음 시작한 날 프로그래머스 내부에 있는 테스트를 봤다.
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문을 돌렸음에도 효율성까지 모두 통과했다.
'완주하지 못한 선수'는 도대체 어떻게 했어야 했을까....
다음에 다시 도전해봐야겠다.
'알고리즘' 카테고리의 다른 글
20200427 프로그래머스 level 2 - 멀쩡한 사각형 (0) | 2020.04.27 |
---|---|
20200426 프로그래머스 level 2 - 멀쩡한 사각형 (0) | 2020.04.26 |
20200425 프로그래머스 level 2 - 멀쩡한 사각형 (0) | 2020.04.25 |
20200423 프로그래머스 level 1 - 완주하지 못한 선수 (0) | 2020.04.23 |
20200422 프로그래머스 level 1 - 완주하지 못한 선수 (0) | 2020.04.22 |
최근댓글