오늘 할 일
- LeetCode 데일리 문제 풀기
- 김영한 스프링 강의 듣고 정리하기
- 코드스테이츠 이력서 상담 신청하기
- 자바의 정석 책 주문하기
오늘 배운 것
LeetCode 데일리 문제 풀기
- 오늘의 문제: 20. Valid Parentheses(https://leetcode.com/problems/valid-parentheses/)
- 문제 조건
- 문자 '(', ')', '{', '}', '[', ']'를 포함하는 문자열 s가 주어지고 입력된 문자열이 유효한지 여부를 결정해라
- 입력된 문자열이 유효하다는 것은
- 여는 괄호는 같은 유형의 괄호로 닫혀야 한다.
- 여는 괄호는 정확한 순서로 닫혀야 한다.
- 모든 닫힌 괄호는 같은 유형의 여는 괄호와 상응해야 한다.
- 문제 해결 과정
- 여는 괄호가 들어오면 스택에 push
- 닫는 괄호가 들어오면 스택에서 pop
- 단, 빈 스택인 경우에는 닫는 괄호가 들어오면 false를 반환해야 한다.
- 연산 이후 스택에 값이 남아 있다면 false, 비어있다면 true를 반환한다.
// 최적화 코드
class Solution {
public boolean isValid(String s) {
Deque<Character> stack = new ArrayDeque<>();
for (final char c : s.toCharArray())
if (c == '(')
stack.push(')');
else if (c == '{')
stack.push('}');
else if (c == '[')
stack.push(']');
else if (stack.isEmpty() || stack.pop() != c)
return false;
return stack.isEmpty();
}
}
김영한의 스프링 기초
*해당 내용은 github 리포지토리에도 저장해놓았습니다.
- 회원 서비스 개발
- 회원 서비스 - 회원 리포지토리 + 도메인을 활용해서 실제 비즈니스 로직 작성
- 서비스 로직의 경우 비즈니스 용어로 이름을 정해준다. 그래야 비즈니스 처리를 해줄 때 소통이 원활하다.
- 변수 타입에 맞춰 자동 생성 → cmd + option + v
- 메소드 추출 → control + t 이후 extract method를 선택하거나 cmd + option + m을 누르면 로직이 있는 내용을 메소드로 추출할 수 있다.
- 회원 서비스 테스트 케이스 작성
- 테스트를 위해 패키지와 테스트 클래스를 자동으로 생성해주는 방법
- 클래스에서 cmd + shift + t
- 테스트에서는 한글로 이름을 바꿔줘도 된다.
- given / when / then 문법
- 무언가 주어지고(given) ~를 실행했을 때(when), ~것이 실행되어야 한다.(then)
- static import로 넘기기 위한 단축키 → 클래스에 커서를 올리고 option + enter
- /* */ 주석 → option + cmd + /
- 테스트를 진행할 때마다 clear를 해줘야 저장된 데이터가 쌓인채로 테스트하지 않을 수 있다.
- 이전에 실행했던 것을 그대로 다시 실행하기 → control + r
- new로 다른 객체의 인스턴스가 생성되는 것은 지양하고 같은 인스턴스로 테스트 해야 한다.
- memberService에서 사용하는 MemoryMemberRepository와 TestCase에서 만든 MemoryMemberRepository는 다른 인스턴스이다. static이 아닌 경우에는 DB가 다르게 인식될 것이다. → 테스트시 완벽하게 같은 환경에서 실행해야 한다.
- 해결방법: memberService에 생성자를 사용하여 외부에서 MemberRepository를 주입해준다. → DI(Dependency Injection)
- 테스트를 위해 패키지와 테스트 클래스를 자동으로 생성해주는 방법
GitHub - chaning49/Today-I-Learned: 매일 공부한 것을 기록하는 저장소입니다.
매일 공부한 것을 기록하는 저장소입니다. Contribute to chaning49/Today-I-Learned development by creating an account on GitHub.
github.com
코드스테이츠 이력서 상담 신청
자바의 정석 구매하기
느낀점
- 리트코드에서 간만에 쉬운 문제를 출제했습니다. 최적화된 코드도 궁금했는데 덕분에 좋은 코드도 알아가게 됐네요.
- 자소서 밤샘의 여파로 오늘은 빨리 마무리하고 자려고 합니다. 그래도 할 일을 다 해내니 뿌듯합니다.
- 앞으로 이력서도 고치고 책도 열심히 읽고 강의도 열심히 듣는 찬붕이가 되겠습니다.
내일 할 일
- LeetCode 데일리 문제 풀기
- 김영한 스프링 기초 강의 듣고 정리하기
- 코드스테이츠 수업 정리(Section 4 - OAuth 2와 JWT를 이용한 샘플 애플리케이션 구현)
- Heart - 글 삭제시 연결된 태그 개수 음수로 변하는 부분 수정하기
- 운동하기 - 웨이트 트레이닝
'TIL' 카테고리의 다른 글
TIL_20230412 (0) | 2023.04.12 |
---|---|
TIL_20230411 (0) | 2023.04.11 |
TIL_20230409 (0) | 2023.04.09 |
TIL_20230408 (0) | 2023.04.08 |
TIL_20230407 (0) | 2023.04.07 |