오늘은 코드카타 알고리즘과 SQL 4번 문제를 풀고, 계산기 프로젝트의 Lv.3를 끝...내려고 하였으나 끝내지 못했다.
그리고, 내일 최종 제출을 앞두고 Lv.1과 Lv.2 계산기를 리팩토링하며 예외 처리 부분을 추가하였다.
오늘 진행한 SQL 문제는 order by를 사용하여 필요한 내용들을 특정 순서로 출력하는 것이었다.
사전캠프를 통해 연습해본 내용이기에 큰 문제 없이 해결할 수 있었다.
그리고, 알고리즘 문제는 나이를 입력받으면, 출생 연도가 언제인지를 계산하는 메서드를 만드는 것이었다.
제공된 문제에서는 2022년도 기준이라는 조건이 있었지만, 혼자 해결을 하면서는 LocalDate를 활용하여 현재 날짜를 기준으로 출생 연도를 계산할 수 있도록 진행해보았다.
각각의 문제와 풀이는 깃허브를 통해 업로드해두었다.
GitHub 보러가기
오늘 호기롭게 Lv.3 계산기를 끝내보려고 하였으나...! Lv.3 계산기의 2단계, 제네릭을 설정하는 부분에서 막혔다.
잘 해결되지 않아 Lv.1과 Lv.2 계산기의 코드를 리팩토링을 하며 머리를 식혔다.
그러던 중에 Lv.1에서는 나눗셈 중 결과가 소숫점으로 나오는 조건을 설정할 때, num2 < num1로만 지정해두었던 것을 발견하였고,
해당 부분을 num1 % num2 > 0으로 바꾸었다.
또한, Lv.2 계산기에서는 양의 정수로 숫자를 제한하지 않아 if문을 사용해 입력받는 수에 제한을 두었고,
스캐너의 형식과 입력값의 자료형이 다른 경우에 생기는 InputMismatchException과
나눗셈에서 분모가 0일 때 생기는 ArithmeticException에 대한 예외 처리를 진행하였다.
Lv.2 계산기에서도 나눗셈에서 소숫점이 생길 때의 처리를 하고 싶었는데, 해결 방법을 찾지 못해 소숫점 아래는 버림 처리된다는 안내 문구만 추가하였다.
이렇게 앞서 1, 2회차에 진행하였던 부분들과 오늘 진행한 내용으로 Lv.1과 Lv.2, 필수 구현 계산기를 마무리지었다.
Lv.3 계산기에서 제네릭으로 설정하기까지 컴파일 오류는 다 해결되었지만,
연산을 처리하고 결과값을 반환하는 과정 가운데 반환이 제대로 되지 않아 NullPointerException이 생기고 있다.
내일 오후 2시까지 과제를 제출해야 하기에 오전 중에 해당 부분을 해결해보려고 한다.
Lv.1, Lv.2 계산기를 너무 쉽게 해결했더니,,, Lv.3도 쉽게 해결할 수 있을 것이라는 자신감이 붙었지만,,,
너무 큰 자신감이었나보다... 괜히 '도전'이라는 말이 붙은게 아니었다.
그래도 Lv.1, Lv.2에서 놓쳤던 부분들을 찾아내서 수정해둘 수 있었음에 만족한다.
내일 최종 제출 전까지 최선을 다해서 해봐야겠다.