엣지 케이스를 잘 확인하자
알고리즘 풀 때 아무 생각없이 초기값을 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 |