어떤식으로 접근했냐면
적이 맞춘 과녁에 화살을 +1 만큼 더 쏴야만 점수획득이 가능하고
그에 따라 얻는 점수는 적이 잃는 점수까지해서 차이가 2배로 벌어지니깐 획득 점수를 2배로 잡은 후에
획득 점수와 획득을 위해 최소로 쏴야하는 화살수를 나눠서 발당 얻는 획득점수를 가지고 어떤 과녁에 쏴야할지 우선순위를 정했음
그리고 우선순위 대로 해당 과녁을 쏴야하는 과녁으로 판정하기 전에 쏠 수 있는 화살수(현재 보유중이 화살수)가 해당 과녁의 획득을 위한 최소 화살 수 보다 작다면
그냥 무시하고 다음 우선순위 과녁으로 가도록 짰음
마지막으로 남는 화살이 생기면 그냥 0점으로 다 보내도록 했음
그림보면 어떤식으로 했는지 대충 이해될듯
샘플로 주어진 테스트케이스는 다 통과했는데 제출시 확인하는 케이스에서는 반정도 맞고 반정도 틀리게 나왔음
정답은 전체 과녁에 쏘는 조합을 이용해서 계산해서 푸는방법은 이해했는데 위에 내가 접근했던 방법이 논리적으로 어떤 예외 때문에
통과가 안되는건지 아니면 논리적 오류는 없는데 구현에서 실수한 부분때문인건지 갑갑해서 뒤지겠음 천재들 도와줘..
이런 식으로 하면 안 풀려
왜..
점수계산을 잘못한거 아님 ?
접근방식에는 문제가 없단건가?
점수계산이 점수를 가져가면 나머지 사람은 아예 점수를 못가져 감. 그래서 잃는 점수의 두배가 아닌거같은데
적은 이미 과녁에 화살을 싸서 34점을 획득한 상태니깐 이후에 내가 쏘면서 점수를 잃게 되는 구조잖아 문제는 두 점수간의 차이를 구하면 되니깐 적이 획득한 점수에서 빼는것이 아니라 내가 획득할 점수에서 2배로 잡아주면 정답은 같은 결과 아니야?
나 저렇게 풀었는데 맞음 근데 점수가 왜 저래?
그냥 한발이라도 많이쏜놈이 과녁점수 먹고 다른놈은 빵점이니까 따로따로 계산하던지 하면되는데
저렇게 접근해서 풀었어? 표는 내가 잘못적어서 수정했다
아니 그냥 짤처럼 적이 2발이면 3발써서 점수 먹던지 아니면 0발쏴서 포기하던지 둘중하나 하면되니까 모든경우에 대해서 1발더쏴서 점수먹거나 걍 버리거나 따져서 함
구현에 있어 실수한건가..
뭐가 허점인지 알겠다. 8점짜리가 발당 점수가 5.333점인데 만약 여기 쏠 차례에 화살이 두발밖에 안남아버렸으면 10.666점이 아니라 그냥 빵점 얻고 끝나게돼서 허점이 생길듯. 그럼 점수 최댓값자체가 달라질거고
8점 획득을 위한 최소화살수가 2개고 남은 화살이 2개니깐 점수 획득하도록 구혔했어..
아니 봐봐 화살이 3발 남았고 7점에는 1발만 쏴도 7점을 얻을 수 있고(발당점수 7) 8점에는 3발을 쏴야 16점(발당점수 16/3=5.333)을 얻을 수 있는 상황이 됐다고 생각해보셈 그럼 너 알고리즘대로면 우선 발당 점수가 높은 7점에 1발을 쏘고 8점에 2발을 쏴서 17.333점을 쏘는거라고 결론이 날거임. 근데 실제로 이렇게 쏘면 얻는점수는 7점임. 이때 최고점수는 8점에 세발을 다쏴서 얻는 16점이니까 실제 정답이랑 알고리즘이 도출하는 답이랑 틀리잖음
발당 얻게되는 점수는 우선순위를 정하기 위해 내가 이용한 값이고 정답에는 이용하지 않아. 단지 그걸 이용해서 어떤 과녁에 맞출지 정하고 나면 해당 과녁에 점수획득을 위한 최소 화살을 발사하게 되고 마지막에는 과녁에 꽂힌 화살들을 보면서 적과 나 중에 1발 이상 맞춘 과녁 중 화살이 더 많은 쪽이 해당과녁 점수를 얻게되고 이걸로 최종점수를 비교하도록 했어
그니까 너 알고리즘대로라면 내가 말한 상황에서 7점에 화살을 쏠텐데 실제 정답은 8점에 화살 3개를 다 박는거라고 여기서 이미 틀렸다니까
현재 상태에서 발당 점수로 우선순위를 결정하는 로직 자체가 잘못됨
와 고마워 뭐가 잘못된건지 알거같어 진짜 고마워
최종점수의 차이의 최대가되어야하는거임 각 발당 점수를따지면 안됨 - dc App
발당 얻게되는 점수는 우선순위를 정하기 위해 내가 이용한 값이고 정답에는 이용하지 않아. 단지 그걸 이용해서 어떤 과녁에 맞출지 정하고 나면 해당 과녁에 점수획득을 위한 최소 화살을 발사하게 되고 마지막에는 과녁에 꽂힌 화살들을 보면서 적과 나 중에 1발 이상 맞춘 과녁 중 화살이 더 많은 쪽이 점수를 얻게되고 이걸로 최종점수를 비교하도록 했어