ikth6001   5년 전

1017번 소수쌍 문제 도전 중인데요 8%에서 계속 틀리는데 원인을 알 수 없습니다. 원인좀 알 수 있을까요??

답변 글을 보고 내용 추가합니다.

방법은 인터넷 검색을 통해 알게된 이분매칭 기법을 사용했습니다.

main에서는 입력값을 읽는 것이고, calculate 메소드에 실제 풀이 로직이 있습니다.

첫 번째 데이터인 data[0]을 기준으로 이분매칭에서 왼쪽에 해당하는 노드들을 결정합니다(data[0]이 짝수이면 짝수인 수들, 홀수이면 홀수인 수들).

이후엔 왼쪽에 있는 데이터와 오른쪽에 있는 데이터의 합을 통해 소수인 경우 adj라는 이분매칭에서 노드의 연결이 될 간선 정보들을 업데이트 합니다.

그 다음엔 DFS를 통한 이분매칭을 계산하고, 계산한 리턴 값 count가 실제 data길이의 반인 경우엔 첫번째 데이터인 data[0]의 다음 노드를 list에 넣어두고 마지막으로 정렬한 후 출력해줍니다.

질문을 너무 대충 올린것 같네요. 죄송합니다.

jh05013   5년 전

이렇게 설명 하나 없이 긴 코드는 아무도 읽을 엄두를 안 낼 것입니다. 적어도 어떻게 접근하셨는지 정도는 설명해 주세요.

그 이전에, 질문을 올릴 때 "아래 공지사항을 먼저 읽고 글을 작성해 주세요." 라는 말이 나오는데 읽으셨나요? 정말로 읽으셨으면 굵은 글씨로 작성된 이 문장도 읽으셨을 것입니다.

https://www.acmicpc.net/board/...

"질문 검색을 먼저 해서 자신에게 필요한 답변이나 반례가 없는지 확인하고 질문을 남겨주세요."

ikth6001   5년 전

마지막에

if(answer.isEmpty()) 

 { 

    System.out.println(EMPTY); 

    return; 

 }

를 통해 첫번째 값과 연결되는 두번째 값이 없을경우에 대한 처리를 안해줘서 문제가 됬었네요.. 인터넷 검색 후 제 로직과 비교하면서 빠진 부분을 찾아서 해결했습니다...

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