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

choiseonmun님의 프로필 이미지
choiseonmun

작성한 질문수

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

3-I

3-I 질문 있습니다.

작성

·

55

0

저의 처음 접근방식은 아래와 같았습니다.

  • 공간 복잡도를 줄여야 하기 때문에 2차원 배열로 모든 것을 나타낼 수는 없다.

  • 동생의 위치는 점화식으로 표현할 수 있다. Bro(t) = Bro(t - 1) + t

    • 0에서 출발해도 1000초 뒤면 500500에 도착하므로 배열의 크기는 1000이면 충분하다.

  • 수빈이가 특정 좌표에 도착한 시간을 기록해두고, 이 시간을 이용해 동생의 위치와 비교한다면 찾아낼 수 있지 않을까?

그러나 이는 틀렸고, 강사님의 강의를 보고 수빈이가 먼저 도착한 경우를 빼먹었다는 걸 알았습니다. 그리고 이를 보완해 아래와 같은 코드를 작성하였습니다.

http://boj.kr/9ca6697bc05c4e72b0e9a7cf5ef1a703

하지만 여전히 틀렸더군요. 강사님의 강의를 마저 보고 풀긴 했습니다만, 제가 위 코드에서 빼먹은 부분이 무엇인지 감이 잡히지 않아 질문 드립니다. 🙏

 

답변 1

2

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

안녕하세요 ㅎㅎ

코드는 대부분 잘 짜셨는데요 ㅎㅎ

		// 수빈이가 먼저 도착한 경우
		if (x == Bro(time + 2))
		{
			cout << time + 2;
			break;
		}

이 코드의 경우 수빈이가 1초에 오고 동생이 5초에 오는 경우의 수는 판단하지 못하지 않을까요?

 

감사합니다.

choiseonmun님의 프로필 이미지
choiseonmun
질문자

아 그래서 홀수, 짝수로 체크하는 것이군요 ! 제가 너무 단순하게 생각했네요. 감사합니다!

choiseonmun님의 프로필 이미지
choiseonmun

작성한 질문수

질문하기