Skip to content

FEAT : jaemin/05#46

Merged
seonghyeon0312 merged 3 commits into
ssafy-gumi-4-algorithm-study:mainfrom
Beforejamni:main
Mar 20, 2026
Merged

FEAT : jaemin/05#46
seonghyeon0312 merged 3 commits into
ssafy-gumi-4-algorithm-study:mainfrom
Beforejamni:main

Conversation

@Beforejamni

@Beforejamni Beforejamni commented Mar 4, 2026

Copy link
Copy Markdown
Collaborator
  • expert : BOJ2098_외판원순회 - PENDING
  • mid : P3_N으로표현 - PASS
  • basic : BOJ11053_가장긴증가하는부분수열 -PASS

@Beforejamni Beforejamni changed the title FEAT : WEEK/05 FEAT : jaemin/05 Mar 4, 2026
@seonghyeon0312

Copy link
Copy Markdown
Contributor

@claude 현재 변경 파일 2개에 대한 각각의 코드 리뷰를 해주고 코멘트도 파일별로 분리해서 달아줘.

@claude

claude Bot commented Mar 5, 2026

Copy link
Copy Markdown

🔍 코드 리뷰 - basic_B11053_가장긴증가하는부분수열/Jaemin.java

✅ 잘한 점

  • Scanner 대신 BufferedReader + StringTokenizer를 사용해 입출력 성능을 신경 쓴 점이 훌륭합니다.
  • dp[i] = 1로 초기화하는 것을 배열 초기화 루프 안에서 함께 처리해 코드를 깔끔하게 작성했습니다.
  • LIS의 핵심 로직인 이중 루프 구조를 정확하게 구현했습니다.

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

  • 시간복잡도: O(N²) — 이중 루프로 모든 쌍을 비교
  • 공간복잡도: O(N) — arr, dp 배열 각각 N 크기

💡 심화: 이 문제는 이분탐색을 활용하면 O(N log N)으로도 풀 수 있습니다. N ≤ 1000이라 O(N²)으로 충분하지만, 나중에 도전해 보면 좋을 것 같아요!

🐛 로직 오류 / 엣지케이스

  • 이상 없음

💡 개선 제안

  • 주석 // 50 10 40 20 30은 디버깅 흔적으로 보입니다. 제출 전에는 제거해두면 더 깔끔합니다.

🎨 코드 품질

  • 변수명(arr, dp, max, N)이 문제의 맥락과 잘 어울립니다.
  • 전반적으로 가독성이 좋고 군더더기 없는 코드입니다.

🏁 최종 판정

  • Approve
  • 사유: 로직이 정확하고 효율적인 입출력까지 챙긴 깔끔한 풀이입니다. 잘 하셨습니다! 👍

🔍 코드 리뷰 - mid_P3_N으로표현/Jaemin.java

✅ 잘한 점

  • DP + HashSet 조합으로 "정확히 N을 i개 사용해서 만들 수 있는 모든 수"를 집합으로 관리하는 핵심 아이디어를 정확하게 구현했습니다.
  • baseNumber 변수로 NN, NNN, ... 같은 숫자 이어 붙이기를 세련되게 처리한 점이 좋습니다.
  • b != 0 조건으로 0 나눗셈 예외를 방어한 점도 꼼꼼합니다.

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

  • 시간복잡도: O(8² × |S|²) — 레벨 8 이하이고 집합 크기도 제한적이라 사실상 상수에 가까움
  • 공간복잡도: O(8 × |S|) — 각 레벨별 HashSet 크기에 비례

🐛 로직 오류 / 엣지케이스

  • 이상 없음
  • (j, i-j)와 (i-j, j) 쌍을 모두 순회하므로 뺄셈·나눗셈 같은 비가환 연산도 빠짐없이 처리됩니다.

💡 개선 제안

  • 패키지 선언이 주석 처리(// package ...)되어 있습니다. 로컬 컴파일 편의를 위해 주석 처리한 것으로 보이는데, 다른 파일들과 일관성을 맞추는 것이 좋을 것 같습니다.
  • main 메서드의 테스트 케이스가 하드코딩되어 있습니다. 프로그래머스는 solution 메서드만 제출하므로 문제없지만, 여러 케이스를 테스트하고 싶다면 반복문으로 묶어보는 것도 고려해보세요.

🎨 코드 품질

  • 미사용 import 제거 필요: import java.util.logging.LogManager;가 코드에서 전혀 사용되지 않습니다. IDE의 Optimize Imports 기능으로 정리해두면 좋습니다.
  • 들여쓰기가 탭과 스페이스가 혼재되어 일부 라인에서 정렬이 어긋나 보입니다. 일관된 들여쓰기를 유지하면 가독성이 올라갑니다.
  • dp라는 변수명 자체는 적절하나, 각 인덱스가 "N을 i개 사용할 때 가능한 수들의 집합"임을 나타내는 주석 한 줄이 있으면 나중에 보는 사람이 더 빠르게 이해할 수 있습니다.

🏁 최종 판정

  • Approve
  • 사유: 알고리즘 핵심 로직은 완벽합니다. 미사용 import 제거와 들여쓰기 통일만 다듬으면 더욱 완성도 높은 코드가 될 것 같습니다. 수고하셨습니다! 🎉

@seonghyeon0312 seonghyeon0312 merged commit a89950e 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