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

남윤아님의 프로필 이미지
남윤아

작성한 질문수

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

2-S

2-S 효율적인 해킹 문제 (중간에 값이 변합니다 ㅠㅠ)

작성

·

365

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요! 2-S 효율적인 해킹 문제를 풀던 중 도저히 알수없는 문제를 만나 질문글을 올립니다.

다름아니라 최대값과 해킹할 수 있는 컴퓨터의 값이 중간에 변하는 문제를 만났습니다.

보시는 바와 같이 DFS 결과값을 넣어주는 반복문 안에서 출력을 하면 출력값이 제대로 나오는데

보시는 바와 같이 DFS 결과값을 넣어주는 반복문 밖에서 출력을 하면 DFS 결과값들을 넣어준 배열값들이 변하면서 원하는 출력값이 나오지 않습니다..

 

어딜 실수한건지, 어딜 잘못적은건지 도저히 모르겠습니다....ㅠㅠ 도와주세요...ㅠㅠㅠㅠ

답변 2

0

남윤아님의 프로필 이미지
남윤아
질문자

엇.. 제가 올린 질문은 '1325번 효율적인 해킹 문제'와 관련된 변형문제나 추가문제에 관한 질문을 올린게 아니라 '1325번 효율적인 해킹 문제'를 풀면서 발생한 문제에 관해 올린 질문입니다.

제가 드린 질문은

cout << j << " " << r[j]<< " " << maxx << "\n"; 를 dfs를 시행하는 반복문 안에 두면 정답이 나오지만, 바깥에 두면 해킹할 수 있는 컴퓨터의 개수를 담는 배열 r 과 최대 개수를 담는 변수인 maxx 에 저장된 값이 변하면서 오답이 나오는데, 왜 그런지 모르겠다는 것이였습니다.

dfs함수가 잘못되서 그런지, 아니면 main함수에서 잘 못 작성한게 있어서 그런건지 모르겠어서 질문 드렸었습니다...

 

남윤아님의 프로필 이미지
남윤아
질문자

참고로 해당 문제 링크는 https://www.acmicpc.net/problem/1325 이고 제가 작성한 (문제가 있는) 코드는 55487106번 소스 코드 (acmicpc.net) 입니다.

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

안녕하세요 윤아님 ㅎㅎ

int dfs(int here) {
	
	int rel;

이부분이요. visited 처리를 해줘야 되지 않을까요?

또한, 저렇게 지역변수로 선언하면 쓰레기값이 들어갈 수 있습니다. 0으로 초기화를 해주셔야 해요.

해당부분은 교안 내 다음 부분을 참고해주세요. ㅎㅎ

지역변수 보다는 전역변수를, 변수명을 간결하게.

 

다른 부분은 정말 잘 짜셨습니다. :)

 

감사합니다.

0

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

안녕하세요 윤아님 ㅎㅎ

강의 내의 문제 말고는 답변을 드리지 않고 있습니다.

다만, 제가 푼 문제라면 제 해설 코드를 드리고 있으니 해당 문제 링크 부탁드립니다.

제가 풀었다면 제 해설 코드 공유해드리겠습니다.

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

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

감사합니다.

강사 큰돌 올림.

남윤아님의 프로필 이미지
남윤아

작성한 질문수

질문하기