24.06.03 월 TIL(Today I Learned)

신민금·2024년 6월 4일
0
post-thumbnail

TIL(Today I Learned)

: 매일 저녁, 하루를 마무리하며 작성 !
: ⭕ 지식 위주, 학습한 것을 노트 정리한다고 생각하고 작성하면서 머리 속 흩어져있는 지식들을 정리 !


알고리즘 코드카타

  • 문제 설명
    숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
    예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
  • 제한사항
    1 ≤ p의 길이 ≤ 18
    p의 길이 ≤ t의 길이 ≤ 10,000
    t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.
class Solution {
    public int solution(String t, String p) {
        int answer = 0;
        
        int t_len = t.length();
        long p_len = p.length();
        
        for (int i=0; i<=t_len-p_len; i++) {
            String range = t.substring(i, i + (int)p_len);
            long rangeNum = Long.parseLong(range);
            long p_num = Long.parseLong(p);
            
            if (rangeNum <= p_num) {
                answer += 1;
            }
        }
        
        return answer;
    }
}

제출했던 개인과제에 대한 튜터님의 피드백

  • TodoSchedulerController 내부에 @Autowired 어노테이션을 사용하여 의존성 주입을 해주셨는데요. 작성해주신 방법으로도 잘 동작하지만 해당 방법은 순환참조를 발생시킬 수 있기 때문에 constructor 방식으로 사용해주시는 것이 더 좋습니다. 직접 생성자를 만들어주시거나 롬복의 @RequiredArgsConstructor 와 함께 final 로 선언해주시면 됩니다.

  • 댓글이 DB에 존재하지 않거나 댓글내용이 비어있는 등의 케이스에 대해 예외처리를 잘 진행해주셨습니다. 다만, 댓글내용이 비어있는 것처럼 기본적인 값에 대한 validation 은 스프링에서 제공해주는 @Valid 어노테이션으로 처리해주시면 더 좋은 구조가 될 것 같습니다. (https://mangkyu.tistory.com/174)

  • 댓글엔티티를 잘 작성해주셨는데요. JPA 사용을 위해 댓글과 일정 사이에도 연관관계를 설정해주시는 것이 좋습니다.

  • 수정기능의 경우에만 @Transactional을 사용해주셨는데요. 유지보수를 위해 등록,삭제 기능에도 트랜잭션 어노테이션을 사용해주시는 것이 좋습니다.

  • 회원가입 시 만족해야하는 조건을 추가로 구현해주시면 좋을 것 같습니다.

  • 로그인 시 PasswordEncoder 를 사용해주셨는데요. 사용자로부터 입력받은 password와 matches로 비교하여도 정상적으로 동작하는지 확인이 필요할 것 같습니다.


수준별 학습 챌린지반 3일차 강의 수료

profile
야옹

0개의 댓글