409. Longest Palindrome

Matcha Kim·2023년 5월 1일

니트코드75제

목록 보기
8/13
class Solution {
    public int longestPalindrome(String s) {
        //배열로 바꾸고 소팅해서 순서바꿔주고 배열에 다 담아 
        
        
        int[] count = new int[60]; //알파벳 개수만큼
        char[] sArray = s.toCharArray();
        //배열크기대로 나열해서 짝수인거 다더하기 
        int sum = 0;
        int max = 0;
        int upmax=0;
        boolean odd=false;
        int   oddMaxCount = 0;
        
        for (int l = 0; l < count.length; l++) {
            count[l]=0;
        }
        
        for (int i = 0; i < sArray.length; i++) {
            if (sArray[i] == 'a') {
                count[0]++;
            } else if (sArray[i] == 'b') {
                count[1]++;
            } else if (sArray[i] == 'c') {
                count[2]++;
            } else if (sArray[i] == 'd') {
                count[3]++;
            } else if (sArray[i] == 'e') {
                count[4]++;
            } else if (sArray[i] == 'f') {
                count[5]++;
            } else if (sArray[i] == 'g') {
                count[6]++;
            } else if (sArray[i] == 'h') {
                count[7]++;
            } else if (sArray[i] == 'i') {
                count[8]++;
            } else if (sArray[i] == 'j') {
                count[9]++;
            } else if (sArray[i] == 'k') {
                count[10]++;
            } else if (sArray[i] == 'l') {
                count[11]++;
            } else if (sArray[i] == 'm') {
                count[12]++;
            } else if (sArray[i] == 'n') {
                count[13]++;
            } else if (sArray[i] == 'o') {
                count[14]++;
            } else if (sArray[i] == 'p') {
                count[15]++;
            } else if (sArray[i] == 'q') {
                count[16]++;
            } else if (sArray[i] == 'r') {
                count[17]++;
            } else if (sArray[i] == 's') {
                count[18]++;
            } else if (sArray[i] == 't') {
                count[19]++;
            } else if (sArray[i] == 'u') {
                count[20]++;
            } else if (sArray[i] == 'v') {
                count[21]++;
            } else if (sArray[i] == 'w') {
                count[22]++;
            } else if (sArray[i] == 'x') {
                count[23]++;
            } else if (sArray[i] == 'y') {
                count[24]++;
            } else if (sArray[i] == 'z') {
                count[25]++;
            }else if (sArray[i] == 'A') {
                count[26]++;
            }else if (sArray[i] == 'B') {
                count[27]++;
            }else if (sArray[i] == 'C') {
                count[28]++;
            }else if (sArray[i] == 'D') {
                count[29]++;
            }else if (sArray[i] == 'E') {
                count[30]++;
            }else if (sArray[i] == 'F') {
                count[31]++;
            }else if (sArray[i] == 'G') {
                count[32]++;
            }else if (sArray[i] == 'H') {
                count[33]++;
            }else if (sArray[i] == 'I') {
                count[34]++;
            }else if (sArray[i] == 'J') {
                count[35]++;
            }else if (sArray[i] == 'K') {
                count[36]++;
            }else if (sArray[i] == 'L') {
                count[37]++;
            }else if (sArray[i] == 'M') {
                count[38]++;
            }else if (sArray[i] == 'N') {
                count[39]++;
            }else if (sArray[i] == 'O') {
                count[40]++;
            }else if (sArray[i] == 'P') {
                count[41]++;
            }else if (sArray[i] == 'Q') {
                count[42]++;
            }else if (sArray[i] == 'R') {
                count[43]++;
            }else if (sArray[i] == 'S') {
                count[44]++;
            }else if (sArray[i] == 'T') {
                count[45]++;
            }else if (sArray[i] == 'U') {
                count[46]++;
            }else if (sArray[i] == 'V') {
                count[47]++;
            }else if (sArray[i] == 'W') {
                count[48]++;
            }else if (sArray[i] == 'X') {
                count[49]++;
            }else if (sArray[i] == 'Y') {
                count[50]++;
            }else if (sArray[i] == 'Z') {
                count[51]++;
            }



        }
  
        
        for (int k = 0; k < count.length; k++) {
            if (count[k] % 2 == 0) {
                sum += count[k];
            } else if(count[k] % 2 == 1) {
                //upmax = Math.max(upmax, count[k]);
                 sum += count[k]-1;
                 oddMaxCount = 1;
            }
        }
      
       sum+=  oddMaxCount;
        return(sum);
    }
}

알게된 사실
1. 배열을 소팅 할 필요가 없었다.
2. 대소문자 구별해 주어야했다.

⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️
3. longest palindrome that can be built with those letters. 해석해보자면 주어진 문자들로 최대한의 plindrome 을 만들자는 것이다. 그러므로 홀수로 3개가 있다면 2개까지 쓸수 있다고 생각해야했는데 내 마음대로 문제를 해석해버렸다.

  1. 홀수라면 무조건 가장 큰 홀수만 쓴다고 생각했는데,
    모든 홀수가 sum += count[k]-1; 아니었다 왜냐면 aaa 케이스의 경우에 3 이어야하는데 2 로 나오기때문.

  2. a 부터 Z까지 if else 로 난리를 쳤는데 실제로는 아스키코드로 개선이 가능하다 개선방법은 다음에 ... 추가로 해야겠다

profile
전국 말차라떼 다 먹어봄 / 단대 컴공

0개의 댓글