Skip to content

Conversation

@ymir0804
Copy link
Contributor

@ymir0804 ymir0804 commented Dec 28, 2025

답안 제출 문제

작성자 체크 리스트

  • Projects의 오른쪽 버튼(▼)을 눌러 확장한 뒤, Week를 현재 주차로 설정해주세요.
  • 문제를 모두 푸시면 프로젝트에서 StatusIn Review로 설정해주세요.
  • 코드 검토자 1분 이상으로부터 승인을 받으셨다면 PR을 병합해주세요.

검토자 체크 리스트

Important

본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!

  • 바로 이전에 올라온 PR에 본인을 코드 리뷰어로 추가해주세요.
  • 본인이 검토해야하는 PR의 답안 코드에 피드백을 주세요.
  • 토요일 전까지 PR을 병합할 수 있도록 승인해주세요.

@TonyKim9401
Copy link
Contributor

@DaleStudy 리뷰해줘

@dalestudy
Copy link
Contributor

dalestudy bot commented Dec 28, 2025

좋은 시도입니다! 이 코드는 이진수의 1의 개수를 세기 위해 10진수 연산을 사용하는 방식인데, 몇 가지 개선점을 제안드리고 싶어요.

먼저, 시간복잡도는 O(log n)으로 적절하며, 공간복잡도는 O(1)로 효율적입니다. 이 부분을 PR에 명시하면 더 좋겠어요.

가장 중요한 피드백은, 현재 코드에서는 n % 2n /= 2를 사용하여 이진수 연산을 수행하는데, 이 방법은 간단하지만 비트 연산자를 사용하는 것이 더 효율적이고 직관적입니다. 예를 들어, n & 1을 이용하면 연산 속도를 높일 수 있어요.

또한, result 초기값이 1로 설정되어 있는데, 만약 n이 0인 경우(즉, 이진수 0)에는 1이 아닌 0을 반환해야 합니다. 따라서 초기값을 0으로 하고, n이 0일 때 바로 0을 반환하는 조건을 넣는 것도 고려해보세요.

코드의 가독성 측면에서는 while (true) 대신 while (n != 0)으로 조건을 명확히 하는 것이 더 좋겠고, if(n <= 2) 조건도 제거 가능합니다. 전체적으로 더 깔끔한 구조로 개선할 수 있어요.

예를 들면:

public int hammingWeight(int n) {
    int count = 0;
    while (n != 0) {
        if ((n & 1) == 1) {
            count++;
        }
        n >>>= 1; // 부호 무시 오른쪽 시프트
    }
    return count;
}

이 방법은 더 직관적이고 효율적입니다. 계속해서 좋은 연습하셨고, 다음번엔 비트 연산자를 활용하는 것도 도전해보세요!

Copy link
Contributor

@TonyKim9401 TonyKim9401 left a comment

Choose a reason for hiding this comment

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

7주차 문제풀이 고생하셨습니다.
올해 리트코드 스터디 마지막 PR이네요.
반정도 달려온 이 시점에 새해 맞이하여 더욱 힘내시길 응원하겠습니다.
고생하셨습니다!

@TonyKim9401 TonyKim9401 merged commit 3feceac into DaleStudy:main Dec 28, 2025
3 checks passed
@github-project-automation github-project-automation bot moved this from In Review to Completed in 리트코드 스터디 6기 Dec 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Completed

Development

Successfully merging this pull request may close these issues.

2 participants