320x100
문제 : https://codejam.withgoogle.com/2018/challenges/00000000000000cb/dashboard
가장 뒤에 있는 CS를 바꾸는게 가장 큰 점수 하락을 만들 수 있다.
(damage, S 개수) 를 담는 map을 만든다.
문자열 P를 돌면서 문자열의 총 데미지를 구하고 map을 세팅한다.
만약 S 개수가 D 보다 크다면 아무리 많은 횟수로 바꾸더라도 D보다 작거나 같은 수를 만들 수 없다.
왜냐하면 S가 최소 1 데미지가 될 수 있기 때문이다.
최소 횟수를 구하려면 damage가 가장 큰 것부터 C와 바꿔나간다. 바꿔나가면서 총 데미지를 갱신한다. (총 데미지 = 총 데미지 - damage + damage/2)
C와 한 번 바꾼다면 그 S 문자는 데미지가 반으로 감소한다. (map[damage]은 1감소. map[damage/2]는 1증가.)
만약 map[damage]가 0이 된다면 비교하는 damage를 반으로 나눠서 다시 계속 탐색한다.
총 데미지가 D보다 작거나 같을때까지 이를 반복하면서 CS 교환횟수를 센다.
5pt 짜리 해답. 10pt 체점은 계속 Runtime error 뜬다.
어디가 문제일까 끄응..
소스코드 : https://gist.github.com/fpdjsns/29a8c22f51a04d7331d326cd68701aaa
320x100
'알고리즘 문제 > CodeJam' 카테고리의 다른 글
[CodeJam][2017] Ratatouille - Round1A ProblemB (0) | 2019.02.08 |
---|---|
[CodeJam][2017] Alphabet Cake - Round1A ProblemA (0) | 2019.02.07 |
[CodeJam][2017] Bathroom Stalls - Qualification Round C (0) | 2019.01.27 |
[CodeJam][2017] Tidy Numbers - Qualification Round B (0) | 2019.01.22 |
[CodeJam][2017] Oversized Pancake Flipper - Qualification Round A (0) | 2019.01.22 |
댓글