오늘은 코드카타 알고리즘과 SQL 5번 문제를 풀고, 계산기 프로젝트를 마무리했다!
오늘 진행한 SQL 문제는 count()를 사용해 동물의 수를 구하는 문제였다.
이 내용도 사전캠프를 통해 연습해본 내용이기에 큰 문제 없이 해결할 수 있었다.
SQL의 1단계 문제들은 비교적 간단히 해결할 수 있어서 내일 1단계 문제들을 많이 풀고, 이후에는 2단계 문제를 풀어야겠다.
그리고, 알고리즘 문제는 제한 범위 이내의 두 수를 입력받고, 두 수가 같으면 숫자 1을, 다르면 숫자 -1을 출력하는 것이었다.
나는 if문을 사용해 두 수가 같을 때와 다를 때를 구분하였는데, 다른 사람들은 '삼항 연산자'라는 것을 사용하였다.
조건식 ? 참일 때 값 : 거짓일 때 값
(num1 == num2) ? 1 : -1;
삼항 연산자의 기본 문법은 위와 같다.
num1 == num2라는 조건식이 참일 때는 1을, 거짓일 때는 -1을 반환한다.
를 저장하기 위한 변수를 int answer = (num1 == num2) ? 1 : -1;과 같이 설정해주면 더욱 간단하게 사용할 수 있다.
각각의 문제와 풀이는 깃허브를 통해 업로드해두었다.
GitHub 보러가기
오늘로 계산기 프로젝트는 끝이 났다!
최종 과제 제출 전까지 Lv.3 계산기의 제네릭에 대한 부분은 해결하지 못했고, 람다와 스트림을 활용해 추가 기능을 구현하기까지만 완성해서 제출하였다.
내가 구현한 추가 기능은 총 4가지이다.
첫 번째 research는 과제에서 제공되는 내용으로, 스트림의 filter()을 활용하여 특정 값 이상인 결과값만 출력하는 것이다.
두 번째 show는 이전까지 저장된 결과값들을 출력하는 것이고,
세 번째 show -a는 이전까지 저장된 결과값을 수식과 함께 출력하는 것이다.
마지막으로 remove는 삭제하길 원하는 결과값을 입력하면 해당 내용이 삭제되는 것이다.
TIL을 작성하면서 생각이 났는데... 결과값만 저장된 컬렉션에서는 삭제를 했지만, 결과값과 수식이 함께 저장되는 컬렉션에서는 삭제를 하지 않았다.
수정을 해놓아야겠다.
과제 제출이 완료된 후에는 튜터님이 과제 해설 강의를 해주셨는데,
Lv.1과 Lv.2 계산기에서는 코드를 조금 더 깔끔하게 짜는 방법에 대해서 알게 되었고,
equals 대신 equalsIgnoreCase를 사용하는 등의 추가 내용들을 알게 되었다.
Lv.3 계산기에 대한 강의를 들으면서는 너무 많은 정보가 들어와 머리가 터질 것 같았는데...
먼저는 Enum 활용 방식에 대한 것이다.
나는 Enum의 각 상수를 ArithemeticCalculator 클래스에서 각각 새로운 객체로 만들고, switch를 통해 기호별로 나누어 각 상수의 연산 메서드를 사용하도록 구성을 했었다.
그런데, 그게 아니라 Enum에 입력받은 문자와 일치하는 값을 가진 상수를 반환해주는 메서드를 만들면 Enum의 상수별로 객체를 만들 필요가 없어진다.
또, 제네릭을 사용하는 방법에 대해서도 알게 되었는데, 사실 아직 완전히 이해하지는 못했다...
해설 강의에서 들은 내용들을 토대로 내가 구현한 계산기에서 수정할 부분을 수정하고, 추가할 부분을 추가해두었다.
지금은 무작정 따라 써보는 수준이지만, 언젠가는 구현하고자 하는대로 술술 써나갈 수 있게 되기를 바란다.
내가 작성한 코드는 깃허브에 업로드해두었다.
GitHub 보러가기
드디어 계산기 과제가 끝이 났다.
사실 더 수정할 부분이 남아있긴 하지만...
그래도 구현해야하는 내용들 중 70%는 구현을 했음에 만족한다.
이제 또 새로운 개인 과제를 해나가야 할텐데, 다음 과제에서는 조금 더 잘 하게 되기를 바란다.