본문 바로가기
TIL & WIL

[TIL] #6. 230919

by mmm- 2023. 9. 19.

어제 목표 & 오늘 완료한 한 일 

  • 웹개발 A to Z 응용

+ 알고리즘 문제

 
내일 목표

  • 웹개발 A to Z 복습
  • 웹개발 A to Z 응용
    • 영화 데이터 불러오기 
    • 리뷰 검색
  • 알고리즘 문제

 

발생한 문제와 해결

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int lastNum = array[array.length-1];
        int[] count = new int[lastNum+1];
        int num = 0;
        
        if(array.length == 1) {
            answer = array[0];
        } else {
            for(int i=0; i<array.length; i++) {
                num = array[i];
                count[num]++;
            }

            int max1 = count[1];
            int max2 = 0;
            for(int i=2; i<count.length; i++) {
                
                if(count[i] >= max1) {
                    max2 = max1;
                    max1 = count[i];
                }
                System.out.println(count[i]);
                System.out.println(max1);
                System.out.println(max2);
            }

            answer = (max1 == max2 ? -1 : max1);
        }
        
        return answer;
    }
}

위와 같이 문제를 풀었는데 채점 결과, 2개의 오답과 10개의 런타임 에러로 인해 25점이 나왔다..

계속 생각하다보니 내가 풀었던 틀에서 벗어나서 코드를 짜기가 힘들었다. 처음부터 다시 생각해보자 싶어 계속 생각을 하다보니 최빈값과 그 횟수를 key, value에 넣으면 되니까 HashMap을 이용하면 좋을 것 같다는 생각을 하게 되었다.

 

그래서 HashMap 을 이용해서 코드를 수정해보았는데 하는 과정에서  

Solution.java:11: error: cannot find symbol Map<Integer, Integer> map = new HashMap<>();

이와 같은 에러가 발생했다. 깜빡하고 import를 하지 않아 발생하는 에러였다.

 import java.util.*; 를 해준 후 다시 채점을 해봤는데 런타임오류는 발생하지 않았지만 9개의 테스트를 실패하여 코드를 살펴보니 answer에 최빈값을 넣은 것이 아닌, array에 존재하는 최빈값의 갯수를 넣어준 상태였다. 그래서 그 값을 num으로 수정해주었더니 문제가 해결되었다. 

 

 

느낀점

level 0 문제인데도 불구하고 2시간 이상의 시간이 소요됐다.. 알고리즘 공부를 많이 해야겠다는 것을 다시 한 번 느꼈다. 

그리고 import 하는거 잊지말자 !!!!

 

'TIL & WIL' 카테고리의 다른 글

[TIL] #8. 230921  (0) 2023.09.21
[TIL] #7. 230920  (0) 2023.09.20
[TIL] #5. 230918  (0) 2023.09.18
[WIL] #1. 230914~230917  (0) 2023.09.17
[TIL] #4. 230917  (0) 2023.09.17