Skip to content

[WEEK07-2] 추슬기#32

Merged
doitchuu merged 2 commits into
pnt-fe-study:mainfrom
doitchuu:doitchuu
Mar 30, 2026
Merged

[WEEK07-2] 추슬기#32
doitchuu merged 2 commits into
pnt-fe-study:mainfrom
doitchuu:doitchuu

Conversation

@doitchuu
Copy link
Copy Markdown
Member

이렇게 풀었어요

1. Same Tree

  • 문제를 풀었어요.
  • 풀이 시간 : -

1) 복잡도 계산

  • 시간 복잡도: O(n)
  • 공간 복잡도: O(h)

2) 접근 아이디어

  1. 두 트리를 동시에 재귀로 내려가면서 같은 위치의 노드를 비교했다.
  2. 둘 다 null이면 같은 노드로 보고 true를 반환했다.
  3. 한쪽만 null이거나 값이 다르면 바로 false를 반환하고, 아니면 왼쪽/오른쪽 서브트리를 계속 비교했다.

3) 회고

이번 문제는 혼자서는 결국 못 풀었다.

처음에는 왼쪽끼리 비교하고 오른쪽끼리 비교한다는 감각은 있었는데,
null 처리와 현재 노드 값 비교를 어떤 순서로 묶어야 할지가 잘 안 잡혀서 흐름이 자꾸 끊겼다.

풀이를 보고 나서는 이렇게 다시 정리할 수 있었다.

  • 둘 다 null이면 같은 트리라고 보고 true
  • 한쪽만 null이면 바로 false
  • 값이 다르면 false
  • 값이 같으면 왼쪽 서브트리와 오른쪽 서브트리를 재귀로 계속 비교

트리 문제는 결국 “현재 노드에서 무엇을 비교할지”만 명확하게 잡히면
재귀 패턴으로 훨씬 깔끔하게 풀린다는 걸 다시 느꼈다.



2. Number of 1 Bits

  • 문제를 풀었어요.
  • 풀이 시간 : 12분

1) 복잡도 계산

  • 시간 복잡도: O(k)
    k는 켜진 비트 개수
  • 공간 복잡도: O(1)

2) 접근 아이디어

  1. n을 unsigned 정수로 바꿔서 비트 연산이 꼬이지 않게 맞췄다.
  2. current &= current - 1 연산으로 가장 오른쪽의 1비트를 하나씩 지웠다.
  3. 비트를 지울 때마다 개수를 세고, 값이 0이 되면 반복을 종료했다.

3) 회고

비트 문제는 아직 익숙하지 않아서 처음엔 문자열로 바꿔서 세는 방식이 먼저 떠오른다.

근데 이번에는 current & (current - 1)가 1비트를 하나씩 지운다는 패턴을 알고 나니
생각보다 훨씬 짧고 명확하게 풀 수 있었다.

이런 비트 연산 문제는 공식처럼 외우기보다, 왜 오른쪽 1비트가 사라지는지 직접 다시 그려보면서 익숙해져야 할 것 같다.



Copy link
Copy Markdown
Collaborator

@raejun92 raejun92 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드가 없어요ㅠ

@doitchuu doitchuu requested review from raejun92 and sik9252 March 30, 2026 13:29
@doitchuu
Copy link
Copy Markdown
Member Author

슬랙으로 말씀드렸었는데 PR이 밀리다보니
저번 PR에 취합되어서 각 코드에 주석으로 재업로드로 달아두었어요!

불편하시겠지만 코드 블록 내려보시면 해당 코드 보실 수 있습니다 ㅠ

Comment thread doitchuu/SameTree.js
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저랑 풀이가 같은 것 같습니다! 둘 다 null인지, 하나만 null인지, 값이 같은지를 먼저 확인한 뒤 왼쪽/오른쪽 서브트리를 비교하는 흐름이 명확해서 읽기 좋았어요~

Comment thread doitchuu/NumberOf1Bits.js
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

n & (n - 1) 비트 트릭을 활용해서 효율적으로 잘 구현하신 것 같아요, 근데 n >>> 0 은 어떤 의미인지 궁금합니다!

Comment thread doitchuu/NumberOf1Bits.js
* @return {number}
*/
var hammingWeight = function(n) {
let current = n >>> 0;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

는 처음 보네요
어떤 동작인가요?!

@doitchuu doitchuu merged commit d1669a4 into pnt-fe-study:main Mar 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants