인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

곧100억님의 프로필 이미지
곧100억

작성한 질문수

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

5-P

5-P 질문이 있습니다!

작성

·

183

0

http://boj.kr/511ca2fd92df4f8886ede64c256bd10e

안녕하세요 선생님!

재귀를 이용하여 양옆의 톱니들과 비교해 계속해서 갱신해 나가는 방법으로 로직을 구현하였습니다.

테스트 케이스로 테스트 중 일부는 맞고 일부는 틀리게 결과가 나옵니다.

디버깅도 해보았으나 적절한 문제점을 찾지 못하였습니다.

혹시 로직에서 틀린 부분이 있을까요?

제 눈이 더 이상 보이지 않아서 질문 드립니다ㅠㅠ

답변 1

0

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

안녕하세요 100억님 ㅎㅎ

이부분이 틀린 거 같습니다.

	else if (dir == -1)
		rotate(gs[idx].begin(), gs[idx].begin() + 1, gs[idx].end());

	if (idx + 1 < t && gs[idx][r] != gs[idx + 1][l]) 

이 코드를 보시면 돌린 이후의 gs를 비교하는데요.

문제를 볼까요?

니바퀴 A를 회전할 때, 그 옆에 있는 톱니바퀴 B와 서로 맞닿은 톱니의 극이 다르다면, B는 A가 회전한 방향과 반대방향으로 회전하게 된다.

 

회전하기 전에 극이 다르고 같음을 확인해야 합니다.

 


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

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

감사합니다.

강사 큰돌 올림.


곧100억님의 프로필 이미지
곧100억
질문자

제가 문제 이해를 잘못하고 있었네요!! 감사합니다!

 

곧100억님의 프로필 이미지
곧100억

작성한 질문수

질문하기