TIL/Coding Test

[프로그래머스] 주식가격

반응형

오늘의 문제. 프로그래머스 플랫폼 문제다. 오랜만에 한글 보니까 넘 반갑.. 

 

코딩테스트 연습 - 주식가격

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00

programmers.co.kr

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.

제한사항
1. prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
2. prices의 길이는 2 이상 100,000 이하입니다.

의식의 흐름은 맞았는데 코드로 풀어내는데서 한 군데 함정에 빠졌다. 그래도 으쨌든 30분 안에 풀어내긴 했음. 아이고 아슬아슬해라. 

가격이 떨어진 시점에서 빠져나가기 전에 어쨌든 sec을 1만큼 더해줘야 하는데 그냥 빠져나가거나 sec=1이라고 명시해버리고 빠져나갈라니까 거기서 자꾸 걸렸다. 테스트케이스 1만 통과하고 나머지는 실패한 빨강 라인이 우수수... 

class cote0322_JusikGagyeok{
    public int[] solution(int[] prices) {
        /*
            ~ 의식의 흐름 ~
            나와 내 이후 값들을 비교해서
            나와 같거나 크면 떨어지지 않은 것이고 
            나보다 작으면 떨어진 시점이다 
            거기까지의 second를 카운트해서 배열에 담자
        */
        int[] answer = new int[prices.length];
        for(int i=0; i<prices.length; i++){
            int sec=0; //초기화 시켜주기
            int price=prices[i]; //비교해야 할 기준값 넣어주기
            for(int j=i+1; j<prices.length; j++){ //다음것부터 끝까지 비교해야 함
                if(price <= prices[j]){ //가격이 같거나 올랐으면 sec을 더해준다
                    sec++;
                }else{ //가격이 떨어졌으면 sec에 1만 더해주고 for문을 빠져나간다...
                    sec++;
                    break;
                }
            }
            answer[i] = sec; //연산이 끝나면 answer배열에 sec값을 넣어준다
        }
        return answer;
    }
}

코딩테스트 문제 풀때마다 의식의 흐름대로 코드 작성해서 돌렸는데 성공하면 짜릿하다. 

728x90
반응형

'TIL > Coding Test' 카테고리의 다른 글

[프로그래머스] 오픈채팅방  (4) 2021.03.24
[프로그래머스] 카펫  (0) 2021.03.23
[LeetCode] Majority Element  (0) 2021.03.20
[LeetCode] Lemonade Change  (4) 2021.03.17
[LeetCode] Two Sum  (0) 2021.03.16