TIL

TIL_20220925

번잔중 2022. 9. 25. 23:55

오늘 할 일

  • 객체지향프로그래밍 심화 복습
  • 1일 1커밋
  • 클래스 및 메서드 정리하고 블로깅
  • 재귀 함수 복습하기
  • 못 풀었던 큐 문제 다시 풀어보기

오늘 배운 것

✏️ 객체지향프로그래밍 심화 복습 + 재귀 함수 복습

객체지향에서 중요한 요소인 4가지 상속, 캡슐화, 다형성, 추상화를 복습했다. 상속과 오버라이딩에 대해 다시 학습하고, 접근 제어자와 getter/setter를 통해 캡슐화가 가능해짐을 다시 확인했다. 또한 참조 변수의 타입 변환(업캐스팅, 다운캐스팅)에 대해 개념을 확실히 정리했고, 추상 클래스를 이해하고 인터페이스까지 다시 보니 처음보다 훨씬 이해가 잘 됐다. 

 

재귀 함수는 아직 설명할 만큼 충분히 안다는 생각이 들지 않는다. 나부터 재귀 함수를 적용하는 방법론에 대해 익숙하지 않아서라고 생각한다. 재귀 함수로 풀 수 있는 문제를 몇 가지 더 풀어보면서 배운 것을 하나씩 적용해봐야겠다!

 

못 풀었던 큐 문제 

상당히 자존심이 상했던 문제이다. 뭔가 될 것 같은데 같은데,,, 하면서도 풀리지 않아 스스로 무기력함을 느꼈다. 오늘 다시 문제를 마주쳤을 때는 다른 느낌을 받았고, 문제가 무엇인지 금새 발견했다. 내가 작성한 코드는 while문에 탈출 조건을 적절하게 걸지 못했던 것과 마지막 문서가 인쇄 작업 목록(큐)에 들어갔을 때의 처리를 못해준 것이었다. 그래서 이번에는 코드에 인쇄 목록이 담긴 큐를 하나 작성해주고, continue를 사용하여 인쇄 목록이 빈 큐가 되면 poll() 동작만 일어나도록 했다.

다른거

- 1일 1커밋

오늘은 백준 사이트에서 큐 문제를 풀었다. 큐에 대한 기본적인 개념이 잡혀있고, 메서드를 활용할 수 있다면 풀 수 있는 쉬운 문제들이었다. 골드4 문제도 풀고 있었는데, 다른 공부를 하기 위해 북마크만 해뒀다. 어제보다는 문제를 꼼꼼히 읽으려고 노력했다!

 

 

GitHub - chaning49/algorithm: 코딩테스트를 위한 알고리즘 공부

코딩테스트를 위한 알고리즘 공부. Contribute to chaning49/algorithm development by creating an account on GitHub.

github.com

 

- 클래스 정리

알고리즘 문제를 풀 때, 유용하게 사용하고 있는 StringTokenizer에 대해서 정리했다. split()과의 차이점을 이번에 정리하면서 알게 됐는데, 문제에 따라 적합한 방법을 골라서 사용하는 것이 좋다. 물론 속도는 StringTokenizer가 더 빠르겠지만!

 

읽어보고 싶다면 아래 링크를 눌러주세요!

 

2022.09.25 - [JAVA] - [Java] StringTokenizer 사용법, split()과의 차이

느낀점

  • 복습을 하는 이유에 대해 명확하게 깨닫고 있다. 잘 이해가 가지 않아서 넘어갔던 내용들이 천천히 다시 읽으면서 흐름을 타자 잘 이해가 됐다. 이제 이 내용을 기술 면접때 대답하기 위해 정리하면 정말 내가 배운 내용을 '아는 사람'이 되리라 믿는다.
  • 나는 공부에는 승부욕이 그닥 없다고 생각하며 살았는데, 그게 아니었다. 몇 일 전 페어 프로그래밍에 나온 문제를 풀지 못했을 때의 기분은 정말 별로였다. 그 이후로도 다시 풀어봐야겠다는 집착이 들었고, 오늘 다시 풀어보며 내가 놓친 부분을 이해했다.
  • 큐 문제를 푼 이유도 위의 이유 때문이다! 🙀
  • 오늘 정리한 클래스와 메서드는 StringTokenizer이다. 즐겨 사용하는 클래스인데, 이번 기회로 정리하게 되어 좋다. 앞으로도 다른 클래스와 메서드를 블로그에 차곡차곡 쌓아서 잊어버리면 내 블로그에서 찾아야지 ㅎㅎㅎ

내일 할 일

🤗 코드 스테이츠 25일차

[자료구조/알고리즘] 자료구조

  • 연습문제 - Daily Coding
  • Chapter - Graph, Tree Search Algorithm
  • Pair / 연습문제 - Coplit - Graph / Tree / BST

다른거

  • 1일 1커밋
  • 아침 운동