jsy8481   4년 전

코드를 짠 흐름은 다음과 같습니다. 

  1. 데이터를 읽어 edge 리스트에 저장 - edge는 i - 팀 번호, k - 팀원 수, dis_a - a까지의 거리, ab - dis_a - dis_b
  2. 그 후 edge를 ab에 대하여 오름차로 정렬합니다. -> ab이 가장 작은 값이 edge의 앞에 옵니다.
  3. 각각에 edge의 요소에 대해 반복합니다. 만약 ab < 0이라면 dis_a가 dis_b보다 작다는 의미기 때문에 a가 k 보다 크다면 -> a가 k보다 많아 k를 전부 할당 가능 / k * dis_a 만큼을 합하고 a를 k만큼 줄입니다. 만약 a가 k보다 작다면 a*dis_a와 (k-a) (dis_a-ab) 를 합하고, a =0 b -= k-a를 합니다. 그 후 ab <0아니라면 반복문을 멈춥니다.
  4. 위와 같은 방법을 edge를 반대로 뒤집어 ab >0 b 에 대해 적용합니다.
  5. ab == 0일 때는 a,b 아무데나 추가해도 상관없으며, 풍선의 수는 사람 수 보다 많거나 같기 때문에 k * dis_a를 해줍니다. 

1 퍼센트도 올라가지 못하고 틀립니다.(이것은 혹시 참고가 될까 첨부합니다.)

코딩 고수님들에 도움을 필요로 합니다. 읽어주셔서 감사합니다.

jsy8481   4년 전

앗 혹시나 제목이 답이 바로 틀려서라고 고민 안한건 아닙니닷 거의 하루 종일 했는데 어디서 오류나 논리가 잘못됬는지 몰라서 질문드려요 혹시나 필요하신 사항이나 개선 사항 알려주시면 바로 찾아서 내용 추가할게요!

jsy8481   4년 전

test_case 처리에서 문제가 있었네요 저는 모든 입력에 뒤에 000 이 붙어서 나오는 지 알았는데,

제일 마지막 테스트 케이스에 0 0 0이 입력되는 거였군요

while 문으로 계속 입력을 받으면서 0 0 0이 입력되는 경우로 수정하였더니 맞았네요

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