Skip to content

FEAT: BOJ_11053_가장 긴 증가하는 부분수열 - PASS#49

Merged
seonghyeon0312 merged 1 commit into
ssafy-gumi-4-algorithm-study:mainfrom
Nitge:YoungJin/05
Mar 20, 2026
Merged

FEAT: BOJ_11053_가장 긴 증가하는 부분수열 - PASS#49
seonghyeon0312 merged 1 commit into
ssafy-gumi-4-algorithm-study:mainfrom
Nitge:YoungJin/05

Conversation

@Nitge

@Nitge Nitge commented Mar 10, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

@seonghyeon0312

Copy link
Copy Markdown
Contributor

@claude 코드 리뷰 해줘

@claude

claude Bot commented Mar 16, 2026

Copy link
Copy Markdown

🔍 코드 리뷰 - BOJ_11053_YoungJin.java

✅ 잘한 점

  • LIS 문제를 단순 O(N²) DP가 아닌 세그먼트 트리를 활용한 O(N log M) 풀이로 접근한 점이 인상적입니다. basic 난이도에서 이 접근법을 선택했다는 건 자료구조에 대한 깊은 이해가 있다는 증거입니다 👍
  • 세그먼트 트리를 별도 이너 클래스로 분리해 관심사를 잘 분리했고, query / update 메서드의 재귀 구조가 명확합니다.
  • 값의 범위(1~1000)를 정확히 파악하고 트리 크기를 1001로 설정한 점도 좋습니다.

⏱ 시간복잡도 / 공간복잡도

  • 시간복잡도: O(N log M) — N은 수열 길이(최대 1000), M은 값의 범위(1000). 각 원소마다 쿼리·업데이트에 O(log 1000) ≈ O(10) 소요
  • 공간복잡도: O(M) — 세그먼트 트리 배열 크기 1001 * 4 = 4004

🐛 로직 오류 / 엣지케이스

⚠️ 잠재적 버그 — 비트 AND 연산자 사용

// 현재 코드 (query 메서드 내부)
if(left <= start & end <= right) {

&비트 AND 연산자입니다. boolean 피연산자에 사용하면 결과는 동일하게 나오지만, 단락 평가(short-circuit evaluation)가 동작하지 않습니다. 즉, 왼쪽이 false여도 오른쪽 조건을 항상 평가합니다. 현재 로직에서는 실제 오류로 이어지지 않지만, 의도치 않은 동작의 원인이 될 수 있습니다.

// 권장: 논리 AND 연산자
if(left <= start && end <= right) {

💡 개선 제안

  • 이 문제는 basic 난이도로 분류되어 있어, 면접이나 시험 상황에서는 O(N²) DP 풀이를 먼저 작성하고 최적화하는 연습도 병행해보면 좋습니다. 세그먼트 트리 접근은 N이 수십만 이상일 때 더 빛납니다.
  • 세그먼트 트리 없이 동일한 O(N log N) LIS를 구현하는 다른 방법도 있습니다. dp 배열과 이분탐색을 조합하면 어떨까요? (힌트: Arrays.binarySearch 또는 lower_bound 구현)

🎨 코드 품질

  • 입출력: Scanner 대신 BufferedReader + StringTokenizer 조합을 사용하면 입력 속도가 개선됩니다. 이 문제 규모(N ≤ 1000)에서는 체감 차이가 없지만, 습관적으로 적용하면 좋습니다.
  • 변수명: st, q, n 등 단문자 변수명이 많습니다. segTree, maxLen 처럼 의미를 담은 이름으로 바꾸면 가독성이 올라갑니다.
  • 이너 클래스 접근 제한자: SegmentTree 클래스를 static으로 선언한 건 적절합니다. private으로 선언해도 무방합니다.

🏁 최종 판정

  • Approve
  • 사유: 핵심 로직은 올바르게 동작하며, 세그먼트 트리를 직접 구현해 LIS에 응용한 시도가 훌륭합니다. &&& 수정은 권장사항이지만, 현재 코드에서 실제 오류로 연결되지 않으므로 Approve합니다. 위 피드백을 참고해 다음 풀이에서 개선해보세요! 🎉

@seonghyeon0312 seonghyeon0312 merged commit 83cc6ef into ssafy-gumi-4-algorithm-study:main Mar 20, 2026
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.

2 participants