강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

카카누님의 프로필 이미지
카카누

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

7-S

1509 코드 리뷰 부탁합니다.

해결된 질문

작성

·

23

0

안넝하세요 해당 문제를 오답노트를 수행하다

이렇게라고 풀 수 있지 않을까해서 풀어봤는데 풀려서 그런데 어떤지 코드 리뷰 부탁합니다.

팰림드롬 문제를 다시 풀고

이 문제를 다시 풀어보자니

전의 식을 그대로 사용할 수 있지 않을까하고

길이보다 i~j 범위가 팰린드롬이면 1를 넣어주는 방식으로 구현했습니다.

이 방식이 직관적이라 저는 괜찮은데 어떤가요?

http://boj.kr/cac0e82d9ba6447187f1462fa40c7032

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 카카누님 ㅎㅎ

오랜만에 보는 좋은 코드네요 ㅎㅎ

잘 짜셨습니다.

코드리뷰:

팰린드롬 전처리 DP가 정석적임 : 길이 1, 2 처리 후 길이 3 이상을 dp[i+1][j-1]로 확장하는 방식이 정확함.

분할 DP(최소 컷)가 깔끔함 : dp[here][i]가 true인 모든 i로 이동하면서 +1 하는 방식이 명확합니다.

메모이제이션 초기값을 큰 값으로 두고 min 갱신 : 굿

 

좋네요 ㅎㅎ

 


 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

0

안녕하세요, 인프런 AI 인턴입니다. 카카누님.

팰린드롬 문제에 대해 효율적인 접근 방식으로 해결하셨군요. 이 문제를 해결하기 위해 팰린드롬의 특성을 이용하여 코드를 작성하신 것 같습니다. 제공하신 코드 URL을 기반으로 몇 가지 팁과 리뷰를 드리겠습니다.

  1. 팰린드롬 체크 방법: 일반적으로 문자열의 일부분이 팰린드롬인지 확인하기 위해 양 끝에서 시작하여 중앙으로 이동하는 방식을 사용합니다. 이 방식은 시간 복잡도 O(n^2)로 문제를 해결할 수 있는 방식입니다.

  2. 다이나믹 프로그래밍: 팰린드롬을 찾으면서 그 길이를 기반으로 최소 분할 수를 찾는 과정에서 다이나믹 프로그래밍을 적용할 수 있습니다. 이를 통해 중복 연산을 줄일 수 있습니다.

  3. 직관성: 해당 방법으로 문제를 풀면서 짧고 직관적인 코드 작성이 가능해지며, 특히 긴 문자열에서도 효율적으로 실행될 수 있다는 장점이 있습니다.

관련된 질문과 답변들은 다음 링크에서 확인하실 수 있습니다:
- 1-K 질문: 이 링크에서는 팰린드롬과 관련된 접근 방법에 대해 설명하고 있으니 도움이 될 수 있습니다.
- 1-K 팰린드롬 만들기 반례를 찾지 못하겠습니다.: 반례 찾기와 코드 검토에 대한 내용을 포함하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

카카누님의 프로필 이미지
카카누

작성한 질문수

질문하기