[코드스테이츠] S2.Unit1 회고

JinYoung Choi·2023년 1월 13일
0
post-thumbnail

Section2가 새롭게 시작 되었다!
물론 쉬는 기간도 없이 바로 2에 들어와서 별 다른 차이는 못느끼겠지만 숫자가 증가했으므로 뭔가 레벨업한 기분?..
내용들을 살펴보니 주로 코딩테스트 알고리즘과 살짝의 스프링 내용들을 배우는 것 같았다.
앞서 1에서 배웠던 내용들을 이제 써먹어볼 차례!
자바 문법도 다 배웠으니 최근들어 백준도 최대한 열심히 풀어보기 시작했다.
백준도 레벨이 있더라.. 경험치 쌓는 재미에 풀다보니 실버레벨은 금방 오게 되었다. 골드까지 금방 뿌순다는 생각을 갖고 계속 해 나가야 겠다.

오늘은 재귀에 대해 배웠다. 문제를 쪼갠다는 개념이 너무 어려웠다.뭘 어떻게 쪼개야하는지 멘붕..
코플릿에서 12문제 정도를 풀어보니 감이 왔다. 감만 왔지.. 복습 안하고 다음주 월요일에 보면 이게 뭐였더라 하고 다시 까먹을것 같다. 그렇기에! 주말에 야무진 복습을 할 것이야!

재귀 함수

재귀(再歸) : 원래의 자리로 되돌아가거나 되돌아옴.

뜻을보면 알다시피 재귀 함수는 자기 자신을 호출하는 함수이다.

조건

  • 문제를 점점 작은 단위로 쪼갤수 있어야 한다.
  • 재귀 호출이 종료되는 시점이 있어야 한다.

장점

  • 상대적으로 코드가 간결하다.
  • 변수를 여러개 만들 필요가 없다.

단점

  • 함수를 지속적으로 호출하게 되어 지역변수와 매개변수,반환값 모두 process stack에 저장하므로 반복문에 비해 메모리를 더 많이 사용하고 이로 인해 속도 저하가 일어난다.
  • 반복문에 비해 코드 흐름을 파악하기 어렵다.
  • 함수를 호출하고 복귀할때 컨텍스트 스위칭 비용이 발생한다

재귀 함수를 이용하기 적합한 상황

  • 주어진 문제를 비슷한 구조로 더 작게 만들 수 있는 경우
  • 중첩된 반복문이 많거나 중첩 횟수 예측이 어려운 경우
  • 변수 사용을 줄여서 프로그램 오류가 발생할 수 있는 가능성을 줄이는 경우

재귀적 사고

  1. 재귀 함수 입력값과 출력값 정의
  2. 문제를 쪼개고 경우의 수 나누기
  3. 단순한 문제 해결
  4. 복잡한 문제 해결

재귀 함수의 적합한 예 ) 구구단 , 팩토리얼

StringifyJSON

JSON - 데이터 교환을 위해 만들어진 객체 형태의 포맷

jackson 라이브러리에서 제공하는 ObjectMapper클래스 - JSON형태로 변경해 준다.

writeValueAsString - 직렬화(serialize)
readValue - 역직렬화(deserialize)

profile
백엔드 취준생

0개의 댓글