sdf3265   5년 전

안녕하십니까


아래와 같이 코딩해보았으나, 정확한 답이 도출되지 않습니다. 

제가 생각하기에 로직은 틀리지 않다고 생각하는데,

틀렸다고 하는 것을 보면 어딘가 분명 잘못헸겠지요ㅠ


로직 상의 잘못된 부분을 지적하여 주시면 감사하겠습니다.

hellogaon   5년 전

매 집마다의 가장 가까운 치킨집의 거리를 계산하여 ans배열에 저장해놓으신 뒤 정렬하여 작은 수 M개를 더하여 답을 출력하신 것으로 보입니다.

아쉽게도 이는 문제에서 묻는 것과 다릅니다!

문제에 대한 이해를 도와드리면 현재 치킨집 중 최대 M개를 골라 N개의 집들의 치킨 거리의 합이 최소가 되는 값을 찾는 것입니다.

예제 입력 2를 예를 들어 좀 더 자세하게 설명드리면,

0 2 0 1 0
1 0 1 0 0
0 0 0 0 0
2 0 0 1 1
2 2 0 1 2

에서 2(치킨집)을 최대 2개를 다음과 같이 배치하면

0 2 0 1 0
1 0 1 0 0
0 0 0 0 0
0 0 0 1 1
0 0 0 1 2

2 + 2 + 2 + 1 + 2 + 1 = 10으로 10을 출력하면 되는 문제입니다. 작성하신 코드로는 2가 출력되는 것을 보실 수 있습니다.


해당코드는 주어진 예제입력을 통과하지 않습니다.

다음부터는 주어진 예제를 넣어보시고 질문하거나 예제 입출력이 왜 이렇게 나오는 지에 대한 이해를 먼저 해보시면 좋을 것 같습니다!


ps. int a[51][14]로 선언된 부분 또한 int a[51][51]로 바꾸시는 것이 좋습니다.

입력 받으실 때도 a[i][j]에 입력 받으실 때 i, j의 범위가 0 ~ N-1인 것으로 보아 입력으로 들어오는 도시의 정보는 N * N으로 a[51][14]일 경우 입력되지 않습니다.

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