tigger97   3년 전

먼저 틀렸다고 나옵니다. %게이지도 안오르고 바로 틀렸다고 나와요.

게시판에 있는 모든 반례들 대입해봤는데 없네요. 

밥먹고 몇 시간째 이 문제만 풀고 있는데 반례를 못찾겠습니다...

tigger97   3년 전

ㅠㅠ반례 아직도 못찾았습니다.

ssw3095   3년 전

36~42 번째 라인에서 d2배열을 채우는 과정이 잘못 된것 같아요. 

한번 d2배열을 직접 출력해서 확인해보세요. 

우선 36~42번째 라인을 수정하시면 될거같아요.

아, 그리고 제가 C++은 거의 안써봐서 코드의 흐름을 잘못 파악한 것 일수도 있는데, 15번째 라인의 반복문이 왜 필요한건지는 잘 모르겠네요.

tigger97   3년 전

15번 째 라인 반복문이 필요한 이유 : i=1일 때 입력받은 배열의 첫 번째 값을 최고점이라고 두고 반복문을 한 바퀴 돕니다. 그리고 i=2일 때 처음에 입력받았던 배열의 두 번 째 값을 최고점이라고 두고 반복문을 한 바퀴 돕니다. 어느 부분이 최고점인지 알 수 없기 때문에 배열의 처음부터 끝까지 최고점이라고 두고 계속 반복했습니다.

d2배열 채우는 부분이 어디가 잘못 됐는지 모르겠습니다. 최고점부터 끝까지 돌면서 내림차순으로 제일 긴 값을 찾는 부분입니다. 47번째부터 49번째 줄의 주석을 해제하고 보면 내림차순의 제일 긴 부분을 잘 찾는 것을 확인할 수 있습니다.

ssw3095   3년 전

잘못된 답변을 드렸었네요. 죄송합니다..ㅜㅜ 
한번 온라인 ide로 막 대입을 해봤는데 반례를 찾기가 어렵네요.. 
제가 드릴수 있는 조언은 한번 코드에서 불필요한 부분을 개선해보시는게 어떨까 합니다. 불필요한 반복문을 줄인다던지, C++에서의 변수 스코프는 잘 모르지만 i를 여러번 선언한다던지 와 같은 자잘한 부분들을 개선하신다면 좀더 문제가 무엇인지 명확하게 보일것 같습니다. 별 도움은 못되어 드렸네요. 죄송합니다..ㅎㅎ

tigger97   3년 전

아닙니다 답변 주신 것만으로도 감사합니다!!!

좋은 하루 되세요~!!

tigger97   3년 전

아 그런데 warning이 있어서 warning을 해결해주니 정답으로 pass가 됐습니다.

그 warning은 두가지였는데, 하나는 안쓰는 변수를 제거해주는 것이었고, 또 다른 하나는 "변수"=0으로 초기화시켜주는 것이었습니다.

두 가지를 해줘서 뭐가 달라지는 지는 모르겠지만 ,,, 이 아니라 달라지네요

왜 그런지는 모르겠는데 max_ans = max(ans[i], max_ans); 이 문장에서 비교해줄 때 max_ans에 아무것도 들어가 있지 않아서 생겼던 오류 같습니다. 

그래서 max_ans를 0으로 초기화 시켜주었더니 정답처리 되어 넘어갑니다.

제 첫 골드문제... 감사합니다.ㅎㅎ

ssw3095   3년 전

해결하셨다니 다행입니다ㅋㅋ 축하드립니다 :)

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