TIL(Today I Learned)_데일리루틴_24.11.12.Tue

728x90

데일리루틴 SQL

MySQL 조건에 맞는 도서와 저자 리스트 출력하기 정답입니다.
SELECT B.BOOK_ID, A.AUTHOR_NAME, DATE_FORMAT(B.PUBLISHED_DATE, '%Y-%m-%d')
FROM BOOK B
JOIN AUTHOR A ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE B.CATEGORY = '경제'
ORDER BY B.PUBLISHED_DATE

 

  • DATE_FORMAT(B.PUBLISHED_DATE, '%Y-%m-%d'): PUBLISHED_DATE를 YYYY-MM-DD 형식으로 변환합니다.
  • WHERE B.CATEGORY = '경제': 경제 카테고리의 도서만 선택합니다.
  • ORDER BY B.PUBLISHED_DATE ASC: 출판일을 기준으로 오름차순 정렬합니다.

 


 제가 제출한 오답입니다.
SELECT B.BOOK_ID, A.AUTHOR_NAME, B.PUBLISHED_DATE #날짜 형식 틀림
FROM BOOK B
JOIN AUTHOR A ON A.AUTHOR_ID = B.AUTHOR_ID
WHERE B.CATEGORY = '경제'
ORDER BY B.PUBLISHED_DATE

 문제 설명과 문제에는 출판일에 대한 자세한 설명이 나와있지 않습니다. 그래서 처음 제출한 오답처럼 냈는데 계속 틀렸다고 하길래 방법에 잘못이 있나 찾아보고, 문제를 봐도 해결책이 잘 보이지 않아 십여분간의 고민 끝에 알아냈습니다.


데일리루틴 알고리즘

java 행렬의 덧셈 정답입니다.
class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int row = arr1.length;
        int column = arr1[0].length;
        
        int[][] answer = new int[row][column];
        
        for(int i = 0; i < row; i++) {
            for(int j = 0; j < column; j++) {
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }
        return answer;
    }
}

제가 제출한 오답입니다.
class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = {};
        int row = arr1.length;
        int column = arr1[0].length;
        
        for(int i = 0; i < row; i++) {
            for(int j = 0; j < column; j++) {
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }
        return answer;
    }
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at Solution.solution(Unknown Source)
at SolutionTest.lambda$main$0(Unknown Source)
at SolutionTest$SolutionRunner.run(Unknown Source)
at SolutionTest.main(Unknown Source)

 위와 같은 오류코드가 나왔습니다. 구글링을 해서 찾아보니 배열에 잘못된 인덱스를 참조할 때 생기는 오류라고 합니다. 저 오류 메세지는 길이가 0인 배열에서 인덱스 0에 접근하려고 시도하여 오류가 발생했습니다. 다시 한번 살펴보니 제가 answer의 배열 길이를 설정하지 않았습니다.


class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
    	//int[][] answer = {};
        int row = arr1.length;
        int column = arr1[0].length;
        
        int[][] answer = new int[row][column];
        
        for(int i = 0; i < row; i++) {
            for(int j = 0; j < column; j++) {
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }
        return answer;
    }
}

 answer 배열을 row와 column 길이를 구한 후에 그 길이를 answer 배열의 길이에 대입하여 길이를 맞췄습니다.

728x90
반응형
LIST