qktlf789456   3년 전

다른 Brute Force 는 방법을 알고있지만, 이 방법으로도 충분히 풀리겠다고 생각했는데 어디부분을 빠뜨렸는지 엉뚱한답이 나오네요.. 어떤식으로 접근을 잘못한걸까요?

greedev   3년 전

if (cur_cnt >= max)

{

res++;

return;

}

이 부분을 생각해봅시다.


max 이상이면 바로 끊는데, 지금 짜신 코드를 보면 아마 원하신 것은

( 전체를 채점했을 때 정확히 5점인 것의 개수) + (정확히 6점인 것의 개수) + ... + (정확히 10점인 것의 개수)

같은데,


(처음부터 어떤 문제까지 채점했을 때 max점인 것의 개수) 들을 더해주고 있네요.

정답이 1 2 3 4 5 1 2 3 4 5 일 때

순서대로 1 2 3 4 5로 방문하시면 5점이 되면서 나가게 되는데,

이 뒤의 숫자에 따라 서로다른 조합이 나올 수 있기 때문에 (1 2 3 4 5 2 1 5 3 4,  1 2 3 4 5 5 4 2 3 1 등...)

답이 안나옵니다.


그리고

new_same_cnt = 0으로 하셨는데,

(j == pre_value)가 아니라면 다음 함수의 same_cnt가 0으로 들어가게 됩니다.

이전 숫자와 같은 숫자는 한개부터 시작하겠죠? 

qktlf789456   3년 전

너무감사합니다.. 엄청 비효율적인 코드인것은 알았지만 정답이 될줄알고 생각했는데 역시 놓치고있는부분이 있었군요. 

서로 다른 조합과.. new_same_cnt 부분 감사합니다. 디버깅도 안 해보고 통과하네요.

댓글을 작성하려면 로그인해야 합니다.