코트카타
22) 두 정수 사이의 합
나의 풀이
public class Ex22 {
static class Solution {
public long solution(int a, int b) {
long answer = 0;
if (a == b) {
answer = a;
}
while (true) {
if (a > b) {
answer += b;
b++;
if (a == b) {
answer += a;
break;
}
} else if (b > a) {
answer += a;
a++;
if (b == a) {
answer += b;
break;
}
}
}
return answer;
}
}
public static void main(String[] args) {
Solution solution = new Solution();
solution.solution(3,5);
}
}
if문을 장황하게 썼다.
다른 사람의 풀이
class Solution {
public long solution(int a, int b) {
return sumAtoB(Math.min(a, b), Math.max(b, a));
}
private long sumAtoB(long a, long b) {
return (b - a + 1) * (a + b) / 2;
}
}
등차수열의 합 공식을 이용해서 푸셨다고 한다.
사실 수학시간 기억이 안나서... 잘 모르겠다.
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12912/solution_groups?language=java
오늘은 리팩토링, 주석 및 README 작성을 했기 때문에
큰 문제는 발생하지 않아서 한계점에 대해 말하고자 한다.
1) 0으로 나누면 Infinity가 되는 원인 파악하기
if문을 사용해서 0으로 나누지 못하도록 처리했으나,
사실은 try-catch문 ArithmeticException을 사용하고 싶었습니다.
그러나 0으로 나눌 경우, Exception이 아닌 Infinity로 받아져서 예외처리가 안되므로 if문으로 처리했습니다.
2) 메서드 반환타입 제네릭을 사용해보기
calculator 메서드에서 반환타입을 제네릭으로 받고 싶었으나,
return result 부분에서 형변환을 하는 방법을 찾지 못해서
double타입으로 두었습니다.
3) 람다&스트림 더 활용하기
Scanner로 입력받은 값보다 결과값 리스트 값이 더 큰 경우 그 값을 출력하도록 구현했습니다.
추후 입력값이 결과값보다 작은 경우 작다는 메시지 출력을 스트림을 사용해서 구현하고 싶습니다.
튜터님 특강
List 타입으로 받아오기
private ArrayList<Double> resultList = new ArrayList<>();
private List<Double> resultList = new ArrayList<>();
기존에는 위처럼 ArrayList 타입으로 받았었는데,
이보다는 List타입으로 받는 것이 더 좋다고 말씀해주셔서 수정했다.
추후에 LinkedList로 바꿀 수도 있으므로 확장성을 좋게하기 위해서로 하셨다.
면접에 잘 나오는 개념 정리
1) 기본형과 참조형
기본형 primitive type
참조형 Reference Type
이 둘을 쉽게 구분하는 방법을 알려주셨다.
int a = 0;
Book book = new Book();
int[] person = {"철수","영희"};
앞글자를 보고 소문자이면 기본형, 대문자이면 참조형이라고 하셨다.
배열은 예외라고 참조형이라고도 말씀해주셨다.
2) 동등성과 동일성
내용 -> 동등성 (equals)
메모리주소 -> 동일성 (==)
실제 개발할 때는 잘 사용하지 않는 개념이지만,
면접할 때 잘 나온다고 하시니
메모해 두었다가 꼭 기억해둬야 되겠다.
'CODING > 스파르타 내일배움캠프 TIL' 카테고리의 다른 글
계산기 개인과제 관련 트러블슈팅 TIL 모음 (0) | 2025.01.09 |
---|---|
19_하샤드 수_개인 과제 진행 Lv3 도전_25.1.8(수) (0) | 2025.01.08 |
18_정수 내림차순으로 배치하기_개인 과제 진행 Lv3 도전_25.1.7(화) (0) | 2025.01.07 |
17_정수 제곱근 판별_개인 과제 진행 Lv3 도전_25.1.6(월) (0) | 2025.01.06 |
16_코트카타 문자열을 정수로 바꾸기_개인 과제 진행_25.1.3(금) (2) | 2025.01.03 |