Today I Learned

최지웅·2024년 3월 14일
0

Today I Learned

목록 보기
115/238

오늘 할일
1. 창엔 1일차
2. LeetCode
3. software engineering github project upload
4. 챙 선물

오늘 한일
2. LeetCode

    1. Data2 Senate를 해결하기 위해 선택한 방법은 senate의 권한을 앗아가면 해당 문자 하나를 지워서 처리하는 것이었다. 이 때 LinkedList등의 사용으로 인해 문자 삭제 시 index가 꼬인다는 문제점이 있었다. 이러한 문제를 해결하기 위해 실제로 원소를 지우는 방법이 아닌 char deleted_mark='-'로 변경하는 방식으로 코드를 작성했다.

      73번 테스트케이스까지 통과하였다.

현재 문자열을 지울 때 앞쪽 원소를 우선적으로 지우게끔 했는데, 우선순위를 바꾸어 뒷 쪽 원소를 우선적으로 지우게 변경해보았다.

class Solution {
    private StringBuilder result;
    private char deleted_mark='-';
    private int delete_near_opponent(int index){
        if(result.charAt(index)==deleted_mark){
            return 1;
        }

        char current_team=result.charAt(index);
        int size=result.length();
        for(int i=index+1; i<size; i++){
            if(result.charAt(i)!=deleted_mark && result.charAt(i)!=current_team){
                result.setCharAt(i, deleted_mark);
                return 0;
            }
        }

        for(int i=index-1; i>=0; i--){
            if(result.charAt(i)!=deleted_mark && result.charAt(i)!=current_team){
                result.setCharAt(i, deleted_mark);
                return 0;
            }
        }

        return -1;
    }
    public String predictPartyVictory(String senate) {
        int size=senate.length();
        result=new StringBuilder(senate);

        while(true){
            for(int i=0; i<size; i++){
                int val=delete_near_opponent(i);
                if(val==-1){
                    return result.charAt(i)=='R'?"Radiant":"Dire";
                }
            }
        }
    }
}


하나의 테스트 케이스 통과만을 앞두고 있다.

"RDRDRDDRDRDRDRDRRDRDRDRDRDRDDDDRRDRDRDRDRDRDRDRRRRRDRDRDRDRDDDDDRDRDRDRDRDRDRDRRDRDRDRDRDRDRRDRDRDRDRDRDRDRDRRDRDRDRDRDRRD" 너무 디버깅이 어려워서 최대한 로직을 보완해보기로 했다.

profile
이제 3학년..

0개의 댓글