인프런 커뮤니티 질문&답변
3-H 질문합니다
작성
·
259
0
http://boj.kr/7b426c7a534b4d2fa7bc4a753d66c738
왜 틀렸다는건지 모르겠네요..
그리고 3-G에서는 수빈이와 동생의 위치가 같은 경우에 대해서 예외처리를 해주었는데
왜 3-H에서는 안하는건가요??
답변 1
0
큰돌
지식공유자
안녕하세요 ㅎㅎ
반례:
100000 1
이럴 때 답이 나오지 않습니다. 불필요한 로직 때문에 시간이 많이 걸린다는 의미인 것이죠.
이 로직 설명해주시겠어요?
int temp = K;
while (temp != N) {
if (temp % 2 == 1) {
for (int prev : {temp - 1, temp + 1}) {
if (visited[prev] == visited[temp] - 1) {
v.push_back(prev);
temp = prev;
break;
}
}
}
else {
for (int prev : {temp - 1, temp + 1, temp / 2}) {
if (visited[prev] == visited[temp] - 1) {
v.push_back(prev);
temp = prev;
break;
}
}
}
}감사합니다.
큰돌
지식공유자
네 근데 불필요한 로직인 것같고 이 때문에 출력이 제대로 되지 않는 것같습니다.
이런 trace문제는 이런식으로 하나의 배열을 만들어줘서 진행해주세요.
zz[next] = now;






수빈이가 이동하는 경우의 수가 -1 +1 *2인데
동생을 잡으면 그 지점에서부터 돌아간다면
+1 -1 /2가 되겠죠
그런데 2를 곱했다면 홀수가 나오진 않으니까
홀수인 경우에는 굳이 /2를 할 필요가 없다고 생각했어요.
그래서 홀짝 나누고 next를 구한것처럼 prev를 구한것입니다.