meme0724   9년 전

학생들의 점수를 입력받아서 점수가 3이면 가중치 곱하기1억점을 해서 더하고 

점수가 2면 가중치 곱하기1만점을 해서 더하고 

1이면 그냥 더하는 식으로 짜서 점수가 가장 큰 팀이 유일하면 답을 출력하고

 하나 이상이면 답이 없는 식으로 문제를 풀었는데 

몇몇 테스트 케이스를 넣어도 통과하는데 제출을 하면 오답이랍니다.

어디가 문제인 걸까요, 도무지 모르겠습니다 ㅠㅠ

****s[4]에서 1,2,3번칸은 각 후보의 점수(가중치적용) 0번칸은 그중 최댓값을 저장했습니다.

최댓값을 구하고 한바퀴 돌면서 최댓값과 같으면 c를 증가시키는데 이게 1이면 유일후보, 2이상이면 답 없음을 출력합니다.

sujin   9년 전

int 범위를 넘는 점수가 생기겠네요..

meme0724   9년 전

아 사실은 가중치를 100만하고 1000을 곱했는데 틀렸다고 하니까 혹시해서 1억과 1만으로 올린 거였습니다. 

가중치를 100만하고 1000으로 해서 int 범위를 넘는 수가 생길 수는 없을 텐데요...

meme0724   9년 전

가중치를 1만과 100으로 적용해도 틀렸다고 뜹니다...

제 머리로는 도무지 어디에서 틀렸다고 하는지 모르겠어요...

sujin   9년 전

3명의 후보 중 가장 큰 점수를 받은 후보가 회장으로 결정된다. 단, 점수가 가장 큰 후보가 여러 명인 경우에는 3점을 더 많이 받은~

3의 갯수, 2의 갯수 전에 전체 점수가 가장 높은 후보가 있으면 회장이 되게 됩니다

max/100000000+max%100000000/10000+max%10000 를 비교하여 전체점수 최대값을 찾아주셔야합니다

예외

5

3 2 1

3 2 1

3 2 1

1 3 2

1 3 2

->

2 12

+ 한명이 3점을 1000명한테 받을경우 가중치 1,000,000 1,000이면 3000 * 1000000 으로 int범위를 넘어가게 됩니다

10000과 100의 경우에는 반례를 찾진 않았지만 3, 2, 1 받은 갯수가 서로 영향을 주기 때문에 반례가 있을 것 같네요

meme0724   9년 전

님이 말씀이신 예외처리하고 long long int로 해서 가중치를 1억과 1만으로 적용하니까 드디어 풀리네요....

int 범위하고 저런 경우는 생각지도 못했는데 조언 주셔서 감사합니다 ㅎㅎ

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