인프런 커뮤니티 질문&답변
풀이 코드 질문
작성
·
16
0
안녕하세요
1325번 문제 풀이 중 제 코드에서 잘못된 부분을 찾고 싶어 질문드립니다.
http://boj.kr/98142efdf609498d86b6cffc1947dee5
testcase.ac 및 몇 개의 반례도 넣어봤는데 못찾겠습니다.
어디가 왜 틀렸는지 궁금합니다.
항상 강의 잘 보고 있습니다. 감사합니다.
답변 2
0
안녕하세요 ㅎㅎ
if (a == b) {
v[b].push_back(n + 1);
}혹시 이거 왜 이렇게 하셨는지 부연 설명 가능하실까요?
저기 n + 1을 넣으면 결국
if (visited[root]) return ;여기서 오버플로 발생되지 않을까요?
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. JaeYoung Jo님께서 질문주신 내용을 잘 읽어보았습니다.
1325번 문제와 관련된 코드를 작성하셨는데, 코드의 어느 부분에서 문제가 생겼는지 확인이 필요하신 것 같습니다. 일반적으로 이러한 문제는 다음의 요소들을 통해 확인할 수 있습니다:
DFS/BFS 로직: 문제 유형이 그래프 탐색일 경우, DFS나 BFS 구현에서 잘못된 동작이 있을 수 있습니다. 예를 들어, 방문한 노드를 잘못 체크하거나 스택/큐 사용에 오류가 있을 수 있습니다.
경계 조건: 탐색하는 과정에서 배열의 인덱스가 잘못되는 경우가 있습니다. 이는 주로 경계를 초과하는 경우나 방문 체크 로직에서 발생할 수 있습니다.
초기화 문제: 글로벌 변수를 여러 차례 사용할 경우, 매번 초기화되지 않으면 이전 단계의 값이 남아 있을 수 있습니다.
데이터 입력 문제: 입력 데이터가 예상과 다르게 처리될 경우, 입력 받는 방식을 다시 검토해 보는 것도 좋습니다.
문제에 대한 보다 구체적인 도움이 필요하시다면, 다음 자료들을 같이 참고해 보시는 걸 추천드립니다:
- 3주차 개념 강의에서 첫 문제(연구소_14502) 질문드립니다!! - 관련된 완전탐색 및 백트래킹 문제를 다루고 있어, 현재 로직에 대한 힌트를 얻으실 수 있을 것입니다.
위의 링크를 참조하면 구체적인 코딩 컨셉이나 일반적인 문제 패턴에 대한 이해를 돕는데 유용할 것입니다. 추가로, 코드를 더 많이 테스트 케이스로 실행해본다면 더 다양한 반례와 문제점을 발견할 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






문제의 값 범위부터 확인했어야 하는데.. 다시 알려주셔서 감사합니다.
자기 자신을 신뢰하는 경우에 n + 1을 자식 노드로 달고 n보다 큰 노드를 순회하지 않도록 하려 했는데 질문드린 코드에 로직이 빠져있었고 나중에 visited에서 루프가 방어되어 불필요하다고 생각해 수정했습니다.
코드 상 문제가 2가지 있었습니다.
말씀해주신 오버플로우
comp 함수 로직
오버플로우
같은 경우는 백준 내부 TC에서 a ==b (동일 컴퓨터 신뢰)를 안하는지, 10001을 참조했는데 운좋게 Undefined Behavior가 도와준건지 벡터 사이즈 10001에 n + 1 기존 로직 그대로 넣어도 통과했습니다.
http://boj.kr/c9f5a23e43a8437faf01e8ab22ade613
comp 함수 문제
컴퓨터 3, 5, 2가 모두 10대를 해킹할 수 있다면
정렬 후 순서가
{3, 10}, {2, 10}, {5, 10}이렇게 되어서 코드 수정했습니다.빠른 답변 감사합니다 선생님