TIL
TIL_20230420
번잔중
2023. 4. 20. 23:48
오늘 할 일
- LeetCode 데일리 문제 풀기
- Heart - 회원정보 수정시 성별, 생년월일 변경할 수 있도록 추가
- 자바의 정석 공부하기
- 운동하기 - 웨이트 트레이닝
오늘 배운 것
LeetCode 데일리 문제 풀기
- 오늘의 문제: 662. Maximum Width of Binary Tree(https://leetcode.com/problems/maximum-width-of-binary-tree/)
- 문제 조건
- 이진 트리의 root가 주어지고, 주어진 트리의 최대 너비를 반환해라.
- 트리의 최대 너비는 모든 깊이 사이에서 최대 너비여야 한다.
- 한 깊이의 너비는 마지막 노드(가장 왼쪽과 가장 오른쪽의 null이 아닌 노드) 사이의 길이로 정의되며, 여기서 해당 레벨까지 확장되는 전체 이진 트리에 존재할 엔드 노드 사이의 null 노드도 길이 계산에 포함된다. -> 왼쪽과 오른쪽에서 null이 아닌 최대 노드 사이에 몇 개의 노드가 존재할 수 있는지 개수를 세는 것!
- 32비트 부호 정수의 범위 안에 정답이 있음을 보장한다.
- 문제 해결 과정
- bfs로 탐색해야 각 깊이에서의 최대 개수를 반환할 수 있을 것 같다.
- 각 깊이별로 가능한 최대값을 구하고 전체 최대값을 저장하는 변수와 비교해주면 될듯!
- 노드와 인덱스 숫자를 저장해서 레벨별로 첫 값과 마지막 값을 빼면 개수를 구할 수 있다.
- 큐의 사이즈는 레벨별로 가능한 최대 개수이다. 그렇기 때문에 첫 번째 인덱스와 마지막 인덱스를 저장해놓으면 크기를 알 수 있다.
Heart - 회원정보 수정시 성별, 생년월일 변경할 수 있도록 추가
- 기존에는 성별과 생년월일을 변경하지 못하도록 했었습니다. 이유는 회원들이 운동 메이트 모집시 성별이나 나이를 속여서 참여하는 경우가 없도록 하기 위해서였습니다.
- 그럼에도 기능을 추가한 이유는 OAuth2.0 회원들의 성별과 생년월일을 받아올 수 없었기 때문입니다. 카카오와 다르게 구글은 간단한 설정만으로는 받아올 수 없어서 불가피하게 기능을 수정했습니다.
- 대신 OAuth2.0 회원들이 처음 가입한 경우 또는 성별과 생년월일 값이 없는 상태로 로그인 한 경우에 회원정보 수정 화면으로 리디렉션하여 설정할 수 있도록 만들고, 이외의 경우, 예를 들어 일반 회원이나 성별과 생년월일이 입력된 OAuth2.0 회원의 경우는 성별과 생년월일을 입력하는 박스가 없는 회원정보 수정 화면을 제공할 생각입니다.
자바의 정석 공부하기
- 자바의 정석의 1장을 보면서 기초 내용을 학습했습니다.
- 자바(Java Programming Language)
- 자바는 운영체제에 독립적이다.
- 자바 애플리케이션은 JVM과 통신하고, JVM은 자바 애플리케이션으로부터 전달받은 명령을 운영체제 별로 변환하여 전달한다.
- 그래서 JVM은 운영체제에 종속적이다.
- 자바는 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어이다.
- 자동 메모리 관리
- 자바로 작성된 프로그램이 실행되면 가비지컬렉터(GC, Garbage Collector)가 자동적으로 메모리를 관리해주기 때문에 개발자가 메모리 관리에 신경쓰지 않아도 된다.
- 멀티쓰레드 지원
- 자바 인터프리터가 쓰레드를 관리해준다.
- 동적 로딩 지원
- 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
- 자바는 운영체제에 독립적이다.
운동하기 - 웨이트 트레이닝
- 오늘의 운동
- 인클라인 벤치 프레스 4 x 12
- 랫 풀 다운 4 x 12
- 오버 헤드 프레스 4 x 12
- 데드리프트 4 x 12
- 사이드 크런치 4 x 12
느낀점
- 오늘도 리트코드에서 트리노드 문제가 나왔습니다. 또 시작된거 같은데, 그래도 전보다는 어떤 방식으로 풀어야 할지 떠오릅니다. 그래프나 트리 문제가 나오면 너무 싫었는데 요즘은 그래도 읽어보고 아이디어 정도는 떠올릴 수 있네요. 그래도 너무 고통스러워요. ㅠㅠ
- 회원정보 수정 기능을 고치면서 이전보다 감이 많이 떨어졌다는 생각이 듭니다. 컨트롤러 - DTO - 서비스까지 이어지는 데이터 관계에 대해 생각하면서 코드를 작성해야 하는데, 생각 없이 작성하다보니 여러 번 반복했습니다. 항상 생각하면서 개발하는 습관을 들여보겠습니다.
- 자바의 정석 책을 사놓고 이제서야 공부를 했습니다. 제가 평소 궁금했던 자바의 내용을 찾아가며 읽어보니 너무 든든합니다. 열심히 공부해야겠습니다.
- 여러 일들로 운동을 몇 일 동안 못해서 뭔가 의욕이 떨어졌었는데, 오늘 운동을 하니 너무 재밌었습니다. 땀을 뻘뻘 흘리면서 데드리프트 할 때는 기분이 너무 좋았습니다.
내일 할 일
- LeetCode 데일리 문제 풀기
- 자바의 정석 공부하기
- 김영한 스프링 입문 강의 듣기 - 자바 코드로 직접 스프링 빈 등록하기
- 이력서 수정