반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

욱꾸미의 주꾸미 발

[코딩테스트] 프로그래머스 - 숫자 게임(Java, Level3) 본문

코딩테스트/프로그래머스

[코딩테스트] 프로그래머스 - 숫자 게임(Java, Level3)

욱꾸미 2022. 12. 3. 16:08
반응형

안녕하세요~

또 오랜만에 인사드립니다.

 

작심삼일도 여러번하면 습관이 되길바라며..

성인이 되니 이런저런 일이 많이생기네요. 어쩌면 핑계일수도 있지만..

열심히 다시 시작해보겠습니다. 😊💪

 

오늘 풀어볼 문제입니다.

언제나 그렇듯 문제확인 후 코드, 그리고 제가생각한 내용 남겨드리겠습니다.

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

 

프로그래머스

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

programmers.co.kr

 

그리고 코드입니다.

import java.util.*;

class Solution {
    public int solution(int[] A, int[] B) {
        int answer = 0;
        PriorityQueue<Integer> a_que=new PriorityQueue<>(Collections.reverseOrder());
        PriorityQueue<Integer> b_que=new PriorityQueue<>(Collections.reverseOrder());
        // 7 5 3 1
        // 8 6 2 2
        for(int d:A)
            a_que.offer(d);
        
        for(int d:B)
            b_que.offer(d);
        
        while(!b_que.isEmpty())
        {
            while(!a_que.isEmpty())
            {
                int a_data=a_que.peek();
                int b_data=b_que.peek();
                
                if(b_data>a_data)
                {
                    answer++;
                    a_que.poll();
                    break;
                }
                else
                    a_que.poll();                 
            }
            b_que.poll();
            if(a_que.isEmpty())
                break;
        }
        return answer;
    }
}

 

다음은 로직설명 드리겠습니다.

저는 여기서 PriorityQueue 즉 우선순위 Queue를 사용했다는점 참고부탁드립니다.

① 먼저 A와 B 둘다 PrioirtyQueue를 통해 정렬합니다. 여기서 역순(Collections.reverseOrder())를 사용한 부분 확인 부탁드립니다.

② 다음은 이제 이 둘을 어떻게 비교할 것인가? 입니다.

    - 최대한 A와 작은 격차를 가진 수로 이긴다

    - 그럼에도 B는 이겨야 한다. 라는 조건을 생각하며 로직을 짰습니다.

③ 먼저 B Queue를 기준으로 가장 큰 수를 찾아 A요소를 이길때까지 Queue를 반복시킵니다.

    - 만약 B Queue의 최대숫자가 A의 제일 작은수를 못이긴다면 나머지 B Queue의 요소들은 볼것도 없겠죠?

④ A보다 큰 B요소를 찾았다면 다음으로 대결할 큰숫자를 A, B Queue에서 각각 뽑습니다.

 

이런생각을 갖고 풀었습니다.

도움이 되셨다면 좋겠네요! :D

 

해당문제는 여기까지 하겠습니다. 다행인지 은근 쉽게 풀렸네요!

날씨가 갑자기 추워졌습니다. 모두 감기조심하시기 바랍니다.

 

캄사합니다. :D

반응형