[SWEA D3] 11387.몬스터 사냥 파이썬 풀이

Ryan Kim
2 min readMar 6, 2021

--

수학적인 규칙을 찾아내보자.

D3 풀이 시작

어떤 문제든 마찬가지겠지만 레벨이 오를수록 점점 컴퓨터가 연산하기 쉽게 코드를 짜는 것에 익숙한 문제들이 출제되는 것 같다.

이번 문제는 설명이 짧아서 풀게 되었는데, 처음에는 데미지 계산하는 방정식이 이해가 안되서 해맸다.

몬스터에게 공격할 때마다 데미지가 누적되면서 총 공격한 데미지가 증가하는데, 이거에 대한 설명이 부족해서 테스트 케이스 값 총량이 이해가 잘 안되었다.

D(1+nㆍL%) 이 한 문장이 N번 지속할 수록 증가한다는 뜻이다.

실제로 데미지가 누적되는 방식은 게임에도 적용되니까!

위의 방정식을 풀어서 쓰면,

D + D * N * L % 로 분배법칙을 적용해 진행할 수 있는데, 이 방정식을 분리해서 생각해 볼 필요가 있다.

먼저 D라는 앞의 수는 사용자가 N번 공격하게 되면 D * N 회 만큼 공격이 들어가게 된다 (여기서 공격이 Miss 뜨는 경우는 없다고 보는 것이니)

그리고 뒤의 D * N * L %가 중요하다. 처음 공격할 땐, 0부터 시작하기 때문에 N회를 공격한다면 0, 1, 2, 3, 4, 5, 6, … , N-1 회만큼 공격할 것이고 D * L * N * (0 + 1 + 2 + 3 + 4 + … + N-1)을 곱한 후 더하면 될 것이다.

간단하게 1 ~ 10을 더한 값을 생각해보면 이 방정식은 10 (1 + 10) / 2 라는 방정식이 성립한다.

따라서 위 값에 적용해보면 N(N-1) / 2라는 방정식으로 변환할 수 있을 것이다.

그리고 문제 설명에서 %는 1/100이라고 했으니 최종 방정식을 정리하면 아래와 같을 것이다.

D3 문제라고 엄청 어려워지지 않지만, 수학적인 사고력을 요구하는 것을 알 수 있다.

생각보다 엄청 간단해서 놀랐다. 일요일에 네이버 코테가 있는데 빠르게 보고, SW 역량 테스트 A형도 봐보자.

왠지 풀 수 있을 것 같은 근거 없는 자신감이 샘솟는다.

Ryan

--

--

Ryan Kim
Ryan Kim

No responses yet