Notice
                              
                          
                        
                          
                          
                            Recent Posts
                            
                        
                          
                          
                            Recent Comments
                            
                        
                          
                          
                            Link
                            
                        
                    민스씨의 일취일장
Code Clinic | 백준 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 | 
|---|
