AngelPlayer`s Diary

알고리즘 강의

엣지 케이스를 잘 확인하자

알고리즘 풀 때 아무 생각없이 초기값을 0부터 하는 경우가 있는데, 아무 조건에 해당하지 않는 경우 첫 번째 값이 정답이어야 할 때가 있다.

 

잘 확인하고 생각하고 행동하자

 

 

 

효율성을 잘 따지자

int answer = 1;
int maxStudent = 0;

boolean[][] isMeet = new boolean[arr.length][arr.length];
int[] count = new int[arr.length];

for (int g = 0; g < arr[0].length; g++) { // 학년		
    for (int i = 0; i < arr.length; i++) { // 자신
        for (int j = 0; j < arr.length; j++) { // 비교 대상 
            if (i == j) continue;
            if (arr[i][g] == arr[j][g]) {
                isMeet[i][j] = true;
            }
        }
    }
}

 

실버 정도 수준의 간단한 문제였는데, for문의 순서 때문에 임시 저장과, 비교하는 연산이 추가로 필요하게 되었다.

 

실제 예시 답안을 참고하면 break를 통해서 넘어가지 않도록 하는 것만으로도 별도의 저장공간이나 연산을 사용하지 않고 정답을 찾을 수 있었다.

 

 

 

문제를 잘 읽자!

쉬운 문제였는데 문제 내용을 헷갈려서 조금 시간이 걸렸다.

 

3 4 1 2가 점수와 같은 느낌으로 봤는데 (첫 번째 줄 케이스에서 학생1은 3점, 학생 2는 4점..) 알고보니 각 열이 등수이고, 해당 열에 값이 학생이었다. 

 

제대로 읽고 문제를 풀자.

 

 

 

 

 

'일상 > 개발 일지' 카테고리의 다른 글

[TIL] 20240204 개발일지  (1) 2024.02.05
[TIL] 20240203 개발일지  (0) 2024.02.03
[TIL] 20240201 개발일지  (1) 2024.02.01
[TIL] 20240131 개발일지 (22일 - 31일)  (1) 2024.02.01
[TIL] 20240109 개발일지  (2) 2024.01.09

공유하기

facebook twitter kakaoTalk kakaostory naver band