CodeingTestPrac/Java Coding Test

프로그래머스 야근지수 자바 [14일차](효율성 문제)

sung.hyun.1204 2023. 7. 9. 11:50

문제는 다음과 같다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/12927

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

다음과 같은 코드는 효율성에서 통과를 하지 못했다. 

public long solution(int n, int[] works) {
    PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());;
    for (int work : works) {
        pq.offer(work);
    }

    for(int i =0 ; i< n ;i++){
        int item = pq.poll();
        if(item <= 0 ) return  0;
        pq.offer(item -1 );
    }
    
    int answr = 0 ;
    while(!pq.isEmpty()){
        answr += Math.pow(pq.poll(),2);
    }
    return  answr;
}

 

 

문제는  다음과 같이 선언했던것이다.

int answr = 0 ;

 

long 으로 선언 해준다 .

long answr = 0 ;

 

 

 

 

 

 

------------------------------------------------------------

효율성을 문제는 항상 자료형 선언을 가장 먼저 확인 하는게 좋다.

반환하는 값과 맞는지

자료 구조를 선언시 오버플로우가 없는지 확인하자.