인프런 커뮤니티 질문&답변

lego0313님의 프로필 이미지
lego0313

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

3-E

3-E 뮤탈리스크 질문있습니다.

해결된 질문

작성

·

163

0

뮤탈리스크 문제를 아래의 논리로 해결하는 코드를 작성했습니다. 예제는 전부 통과했는데, 왜 제출하면 답이 틀리는 지 잘 모르겠습니다.

논리

  1. scv 체력의 합이 1 이상이면 뮤탈은 공격해야 한다.

  2. scv 체력을 내림차순으로 정렬한다.

  3. 체력이 높은 scv 순으로 9,3,1 데미지를 입힌다.

  4. 데미지를 입어 체력이 0 미만이면, 0으로 체력을 재조정한다.

  5. scv의 체력을 합한다.

위의 과정을 반복하면서 횟수를 센다.

코드

http://boj.kr/5dd90a26a8b24bb797b6bcffcde65bba

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 lego님 ㅎㅎ

  1. 체력이 높은 scv 순으로 9,3,1 데미지를 입힌다.

  2. 데미지를 입어 체력이 0 미만이면, 0으로 체력을 재조정한다.

>>

이런 로직 자체는 잘 생각하셨습니다. ㅎㅎ

다만.... 큰순서대로 깍으면 된다는 논리는 생각해볼만하지만

이부분이 잘못되었습니다.

1. 무식하게 풀기를 먼저생각하고 이게 만약 안된다고 했을 때

2. lego님이 하셨던 생각처럼 그리디적 방법을 생각해야 합니다.

 

또한 반례를 들자면

10 10 6 입니다. 종우님의 로직대로 계속해서 9 3 1로 하면 3번해야되지만 최적의 경우의수는 2번이죠?



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


lego0313님의 프로필 이미지
lego0313
질문자

감사합니다. 큰 도움이 되었습니다.

lego0313님의 프로필 이미지
lego0313

작성한 질문수

질문하기