민스씨의 일취일장

Code Clinic | 백준 1524 코드 리뷰 본문

Code Clinic

Code Clinic | 백준 1524 코드 리뷰

읻민스 2024. 11. 18. 10:40
반응형

백준 1524를 해결하기 위해 작성한 코드를 리팩토링하는 글입니다.

코드 클리닉 - 백준 1524 코드 리뷰

코드클리닉 백준 1524 문제 코드리뷰 썸네일 이미지이다.
코드클리닉 - 백준 1524 문제 코드리뷰

 

작성한 코드

처음에 작성한 로직이다. Queue를 사용할 때 poll()만 사용한 한계가 엿보인다. 로직이 다소 복잡해, 어떤 걸 표현하고 싶은지 직관적으로 이해가 잘 안간다.

private static String play(PriorityQueue<Integer> A, PriorityQueue<Integer> B){
    int a = A.poll();
    int b = B.poll();
    while(!A.isEmpty() && !B.isEmpty()){
        if (a >= b) {
            b = B.poll();
        } else {
            a = A.poll();
        }
    }
    if(A.size() == B.size()){
        return a>=b ? "S\n" : "B\n";
    } else {
        return A.isEmpty() ? "B\n" :"S\n";
    }
}

개선 1

가독성을 높이고, peek()으로 Queue 자료형의 특징을 한 층 더 잘활용하였다. 그리고 자료 반환 부분 로직을 좀 더 간결하게 표현할 수 있게 되었다. 뿐만 아니라, 로직을 이용해서 어떤 것을 표현하고 싶은지 이해하기 쉬워졌다.

private static String play(PriorityQueue<Integer> A, PriorityQueue<Integer> B){
    while(!A.isEmpty() && !B.isEmpty()){
        int a = A.peek();
        int b = B.peek();
        if (a >= b) {
            B.poll();
        } else {
            A.poll();
        }
    }
    return A.isEmpty() ? "B\n" : "S\n";
}
728x90
반응형

'Code Clinic' 카테고리의 다른 글

Code Clinic | 백준 31217 코드 리뷰  (2) 2024.11.05