jsy8481   4년 전

16%정도에서 틀렸다고 나왔습니다. (혹시 참고가 될 까 싶어 적습니닷)

코드의 흐름은

먼저 1번 숫자를 빼서 홀수 짝수를 판단하고

left에는 그 숫자와 반대되는 수를 담았습니다.

그 후 1번과 소수가 될 수 있는 값을 뽑았습니다. 

이후 그래프를 그리기 위해 left right 두 리스트의 값을 비교하여 left에서 right 를 더해 소수가 된다면 이를

edge에 추가해두었고

dfs 최대 유량 알고리즘을 이용하였습니다.

그래프는 딕셔너리를 이중으로 사용하여 {시작점 : { 도착점 : weight}} 구조로 만들었습니다.

0 이 되는 엣지를 중간에 제거하는 방법으로 계산 횟수를 줄였습니다. -> 제거해도 코드가 진행을 되더라구요..

어떤 부분이 오류가 될지 몰라 이것 저것 두서 없이 쓴 점 죄송합니다.

읽어주셔서 감사합니다. 도움을 부탁드려요!!

jsy8481   4년 전

그래프 구성을 소스 left right 종료

로 구성하고 right의 모든 노드가 종료로 1을 보낸 경우 연결을 시켰습니다.

생각해보니 left와 right 즉 홀수 짝수의 갯수가 다른 경우가 있을 때 예를 들면 홀수가 100개 짝수가 2개라면

제가 위에 짠 코드로는 짝수 2개만 짝을 이루어도 답으로 인정되었습니다.

최대 갯수는 n //2 이고 이미 1과 연결된 하나를 뽑았음으로 n//2 -1 과 일치하는지 마지막 노드의 간선의 수랑 이를 비교하여 해결하였습니다.

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