Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions number-of-1-bits/JeonJe.java

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🏷️ 알고리즘 패턴 분석

  • 패턴: Bit Manipulation
  • 설명: 주어진 코드는 각 비트를 검사하며 1의 개수를 세는 방식으로, 비트 연산과 비트 시프트를 활용한 비트 조작 패턴(Bit Manipulation)을 사용합니다.

📊 시간/공간 복잡도 분석

유저 분석 실제 분석 결과
Time O(1) O(32)
Space O(1) O(1)

피드백: 비트를 한 칸씩 오른쪽으로 쉬프트하며 1의 개수를 누적합니다. 입력 정수의 비트 길이에 비례하는 시간 복잡도입니다.

개선 제안: 현재 구현이 적절해 보입니다.

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import java.util.*;

// TC: O(1)
// SC: O(1)
class Solution {
public int hammingWeight(int n) {
int answer = 0;

while (n != 0) {
if ((n & 1) == 1) {
answer++;
}
n = n >>> 1;
}
return answer;
}
}
23 changes: 23 additions & 0 deletions valid-palindrome/JeonJe.java

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🏷️ 알고리즘 패턴 분석

  • 패턴: Two Pointers, String Manipulation
  • 설명: 주어진 코드는 두 부분에서 문자열을 정리한 뒤 양 끝에서 포인터를 움직이며 대칭 여부를 확인한다. 문자 필터링/소문자 변환은 문자열 조작, 끝에서부터의 탐색은 Two Pointers 패턴에 해당한다.

📊 시간/공간 복잡도 분석

유저 분석 실제 분석 결과
Time O(n) O(n)
Space O(n) O(n)

피드백: 문자 필터링으로 새 문자열을 만들고, 그 문자열의 양쪽에서 비교합니다. 두 번 순회로 전체 문자열의 길이를 기반으로 시간 복잡도가 결정됩니다.

개선 제안: 필요 시 제너릭 이터레이터나 두 포인터 방식으로 중간 문자열 생성 없이도 구현 가능해 보입니다.

Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import java.util.*;

// TC: O(n)
// SC: O(n)
class Solution {
public boolean isPalindrome(String s) {
StringBuilder sb = new StringBuilder();

for (char c : s.toCharArray()) {
if (Character.isLetterOrDigit(c)) {
sb.append(Character.toLowerCase(c));
}
}

for (int i = 0; i < sb.length() / 2; i++) {
if (sb.charAt(i) != sb.charAt(sb.length() - 1 - i)) {
return false;
}
}
return true;
}

}
Loading