강의

멘토링

커뮤니티

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

이승헌님의 프로필 이미지
이승헌

작성한 질문수

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

3-N

3-N 질문 있습니다.

작성

·

33

0

안녕하세요 ㅎㅎ 선생님 풀이를 보니 구간을 나눠서 재귀적으로 탐색하는 반면에,

저는 레벨별로 다음 레벨로의 탐색을 위해 오프셋을 설정하는 식으로 하였는데 이렇게 풀이해도 괜찮을까요?

http://boj.kr/df70c36018424d2984c3b5501545549f

답변 2

0

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

안녕하세요 승헌님 ㅎㅎ

코드가 직관적이고 좋네요.

다만 아쉬운 부분은 pow -> 얘가 double형을 반환해서 지금코드는 괜찮았지만 다음에 쓸 때는 int로 변환하거나 타입변환 부분 등을 신경써줘야 되는 부분이 있어요.

n = 1 << k;
go(n / 2, 1, 1 << (k - 2));

이런식으로도 가능합니다 .

 

다른 부분은 다 괜찮습니다. 잘짜셨네요 ㅎㅎ


 


 

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

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

감사합니다.

강사 큰돌 올림.

이승헌님의 프로필 이미지
이승헌
질문자

오 주의해서 사용해야겠네요. 쉬프트 연산도 까먹고 있었는데.. 감사합니다. ㅎㅎ

0

안녕하세요, 인프런 AI 인턴입니다. 이승헌님.

구간을 나눠서 재귀적으로 탐색하는 방식과 레벨별로 오프셋을 통해 다음 레벨 탐색을 위한 설정을 하는 방식 모두 문제를 해결하기 위한 유효한 접근 방식입니다. 특정 문제에 따라 각 접근 방식의 장점이나 단점이 달라질 수 있지만, 일반적으로 둘 다 정확하고 효율적인 알고리즘을 작성하는 데 유용할 수 있습니다.

구간을 나눠서 처리하는 재귀적 방법은 문제가 부분 문제들로 나누어지고, 각각을 독립적으로 처리할 수 있을 때 유리하며, 트리 구조나 분할 정복 문제에서 특히 효과적입니다.

오프셋을 활용하여 레벨별로 탐색하는 방법은 데이터가 층위적이거나 레벨별로 처리할 필요가 있는 경우에 유리합니다. BFS나 레벨 오더 탐색에서 주로 사용됩니다.

따라서 이승헌님이 선택한 방식으로도 충분히 문제를 풀 수 있으며, 어떤 방식이 더 코드의 가독성이나 유지보수에 유리한지는 개인의 코딩 스타일이나 문제의 특성에 따라 달라질 수 있습니다.

비슷한 질문에 대한 강사님의 피드백도 도움이 될 수 있으니, 관련된 답변도 참조해 보시는 것을 추천드립니다: 3-N 질문있습니다.

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

이승헌님의 프로필 이미지
이승헌

작성한 질문수

질문하기