Today I Learned
(24.04.29)[3주차] CODE KATA 이슈 정리(String에 char붙이기), 과제 이슈 정리(불필요 초기화 중복)
과제 때문에 코드를 짜는데도 맞는지 검증하고, 또 제어자 때문에 헷갈려서 아직 갈길은 먼것 같아
자괴감이 너무 든다.
CODE KATA 이슈 정리
더보기
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
class Solution {
public long solution(long n) {
String str = String.valueOf(n);
char[] charArr = str.toCharArray();
ArrayList<Character> charList = new ArrayList<>();
for (char c : charArr) {
charList.add(c);
}
Collections.sort(charList);
Collections.reverse(charList);
String answerStr = "";
for (char c : charList) {
answerStr += c;
}
long answer = Long.parseLong(answerStr);
return answer;
}
}
charatcter 타입을 String으로 합치기 이슈
이슈
- 스와핑을 사용해서 배열을 반대로 뒤집는 것을 하지 않으려곤 Collections 클래스의 reverse를 사용하도록 함
- String 클래스의 concat 메서드를 쓰려고 character를 String으로 바꾸고 추가하려고 시도: answerStr.concat(String.valueOf(c)) 계속 에러가 발생
원인
- String 은 char타입의 배열이라곤 할 수 있지만, 단순히 add concat 메서드를 사용할 필요가 없음
- concat은 말그대로 String끼리 붙이는 메서드이기 때문에 적합X
해결
- String에 char타입 데이터를 더하고 싶을 때는 그냥 +=만 사용하면 간단하게 해결
과제 이슈 정리
초기화 중복
더보기
public class Calculator {
/* 필드 생성*/
private int num1;
private int num2;
private char operator;
private Deque<Double> calculationResult;
/* 초기화를 위한 기본 생성자 */
public Calculator() {
calculationResult = new LinkedList<>();
}
...
}
이슈
- 초기화 중복 주의 발생
원인
- Calculator 클래스 내 변수 초기화를 위해서 private Deque<Double> calculationResult = new LinkedList<>(); 코드가 기본 생성자와 초기화를 두번하게 만들어버림
- Calculator 클래스가 생성될 때 마다 초기화 시키기위해서 기본 생성자를 생성했을 때, 같은 작업을 두번하게 되는 상황
해결
- 처음에는 빨간줄 그어지고 기본생성자가 잘못되었는줄 알고 이것저것 고쳐봤지만, 다시 한번 위에서 부터 읽어보다가클래스 속성 선언 즉 인스턴스 변수로 calculationResult 가 설정이 안되어있음을 발견 -> private Deque<Double> calculationResult;로 바꿔서 변수 선언으로 바꿈
- 기본 생성자를 중간에 추가하고 바꾸는 것 보다는 속성(인스턴스 변수선언) + 생성자(초기화 등) + 기능(메서드) 이 순서대로 클래스가 한 덩어리임을 잊지를 말아야함
- 자주 습관처럼 객체생성으로 초기화 + 기본생성자 이렇게 초기화를 시키는데 작동하는데 문제는 없지만(다른 클래스에서 객체 생성 할 때마다 초기화 하는거나 처음 로드할때 초기화 하는거나 똑같으므로) 쓸데없는 중복으로 코드가 비효율적으로 변함을 인지해야 + 명확하지 않은 초기화 이므로
- 단, final 상수 일 경우 무조건 초기화 진행.
내일이 마지막 과제일이기 때문에 빠르게 코딩을 완성할 수 있도록.
'Today I Learned' 카테고리의 다른 글
(24.05.01)[3주차] CODE KATA와 과제에서 스트림과 람다식(메서드참조)정리 (1) | 2024.05.01 |
---|---|
(24.04.30)[3주차] 과제 이슈 정리 (0) | 2024.04.30 |
(24.04.27)[2주차] WIL (0) | 2024.04.27 |
(24.04.26)[2주차] 알고리즘 심화 세션 정리, 과제 이슈 정리 (1) | 2024.04.26 |
(24.04.25)[2주차] 알고리즘 세션+개인과제 (1) | 2024.04.25 |