[인프런 워밍업 클럽 2기 - CS] 발자국 - 2주차

[인프런 워밍업 클럽 2기 - CS] 발자국 - 2주차

회고

저번주 회고에 적었던 대로 이번주는 일정에 맞게 수강을 진행했다. 게다가 휴일도 1일 있었기 때문에 일정을 따라가기 더욱 쉬웠다.

덕분에 저번주는 강의를 들으면서 미션을 풀었는데, 이번주는 미션의 답을 생각해보고 내가 정리했던 강의 노트를 보면서 미션을 풀었다. 저번주는 미션을 풀기 위해 강의를 보았던 느낌이라면 이번주는 미션을 풀기위해 복습한 느낌.

그리고 여유가 생겨 미션의 코드를 디벨롭하기도 했다.

function sumOdd(n) {
  // 재귀 로직
  if (n === 0) return 0;
  return sumOdd(n - 1) + (n % 2 === 0 ? 0 : n);
}

console.log(sumOdd(10)); // 25

원래 코드는 위처럼 모든 수를 재귀 호출하는 방식이었는데,

아래 코드처럼 홀수만 재귀 하도록 코드를 변경했다.

function sumOdd(n) {
  // 재귀 로직
  if (n <= 0) return 0;
  const isOdd = n % 2 === 1;
  return sumOdd(isOdd ? n - 2 : n - 1) + (isOdd ? n : 0);
}

console.log(sumOdd(10)); // 25

 ++ 변수 선언을 삭제하고 리턴을 두가지 방법으로 나눠서 조금 더 효율적이게 바꿔보았다.

function sumOdd(n) {
  // 재귀 로직
  if (n <= 0) return 0;
  return n % 2 === 1 ? sumOdd(n - 2) + n : sumOdd(n - 1);
}

console.log(sumOdd(10)); // 25

 

일정을 보니 벌써 다음주가 마지막 주이다.

이번주의 여유가 마음에 들었던 만큼 다음 마지막주도 여유롭게 끝내야겠다. 

 

운영체제

확실히 그림으로 비유를 해줘서 데드락의 이해가 쉬웠다.

사실 지금까지 메모리는 그냥 크면 좋다고 생각했었는데, 운영체제를 공부하면서 저장장치에 있는 프로그램이 메모리에 올라가 프로세스로 동작하는걸 보니 메모리가 왜 커야 좋은지 알게 되었다.

 

자료구조와 알고리즘

앞의 문제가 해결되었다고 가정하고 끝의 부분만 계산하는 재밌는 함수인 재귀함수를 알게 되었다.

처음에는 이를 구현하는 방법이 어려웠는데, 미션을 한 번 하고나니 조금은 더 이해 되었다. 아쉬운 점이라면, 미션의 내용이 for문을 돌리는게 더 효율적일 듯 싶다는 점이다. 즉, 진짜 재귀함수가 필요한(유리한) 문제도 있었으면 좋았을 것 같다.

 

 

미션 - 2주

https://www.inflearn.com/blogs/8682

발자국 - 1주

https://www.inflearn.com/blogs/8562

댓글을 작성해보세요.

채널톡 아이콘