프로그래머스

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

programmers.co.kr

class Solution {
    int[] arr;
    int[] lion = new int[11];
    int[] record = new int[11];
    int gap = Integer.MIN_VALUE;
    int N;
    boolean hasWin;
    
    int isLionWin(){
        int enemyScore = 0;
        int lionScore = 0;
        for(int i = 0; i < 11; i++){
            if(arr[i] == 0 && lion[i] == 0) continue;
            else if(arr[i] >= lion[i]){
                enemyScore += 10-i;
            } else lionScore += (10-i);
        }
        return lionScore - enemyScore;
    }
    
    void dfs(int pos, int depth){
        if(pos > 10) return;
        if(depth == N){
            int t = isLionWin();
            if(t > 0){
                hasWin = true;
                if(t > gap){
                    gap = t;
                    for(int j = 0; j < 11; j++){
                        record[j] = lion[j];
                    }
                }
                else if(t == gap){
                    for(int i = 10; i >= 0; i--){
                        if(record[i] < lion[i]){
                            for(int j = 0; j < 11; j++){
                                record[j] = lion[j];
                            }
                            break;
                    } else if(record[i] > lion[i]) break;
                    }  
                }
            }
            return;
        }
        if(lion[pos] > arr[pos]){
            dfs(pos+1, depth);
        }
        else{
            lion[pos] += 1;
            dfs(pos, depth+1);
            lion[pos] -= 1;
            
            dfs(pos+1, depth);
        }
    }
    public int[] solution(int n, int[] info) {
        int[] answer = {-1};
        arr = info;
        N = n;
        dfs(0, 0);
        answer = hasWin ? record : answer;
        
        return answer;
    }
}

 

95분.. 

무작정 코딩하다가 덕지덕지 코드가 더러워졌다.

 

50분정도 소요됐을 때 87.5점이 나왔었는데, 실제 코테였으면 다음 문제로 넘어가지 않았을까 싶다..

 

그 후로 멘탈이 나가서 45분동안 지옥의 디버깅으로 결국 잡아냄.. 

 

최대값이 갱신될 때 기존의 최대값이 아닌 배열과 비교해서

최대값인 배열이 반영이 안되는 거였다

 

매번 느끼지만 처음에 설계가 정말 중요하지 싶다..

 

그리고 lion이 아니라 ryan이었다

'문제풀이 > 프로그래머스' 카테고리의 다른 글

신고 결과 받기  (0) 2024.04.10
괄호 변환  (0) 2024.04.08
택배 배달과 수거하기  (0) 2024.04.06
리코쳇 로봇  (1) 2024.04.05
푸드 파이트 대회 Java  (0) 2024.02.28

+ Recent posts