有希
Hacker Rank/Tower Breakers 본문
두 가지 어려움이 있다. 영어 그리고 알고리즘 문제 -_-
2명이 번갈아가며 수행하고 항상 1번이 먼저 한다.
1번은 타워의 높이의 약수만큼 덜어내거나 높이가 1이 되도록 덜어낼 수 있다.
1,2번이 번갈아가며 수행할 때 자기 차례때 모든 타워의 높이가 1인 상태이면 패배한다.(타워 높이 1을 만들면 그 타워는 더이상 건들지 못한다)
예외 사항부터 처리한다.
모든 타워의 높이가 1이라면? 처음 시작이 1번이고, 더이상 덜어낼 수 없으므로 2번 승리
타워의 개수가 짝수개이다 -> 타워 개수 2개 놓고 생각해보면 된다. 무조건 2번이 이긴다. 모든 타워의 높이가 같으므로 짝짝 홀홀만 고려하면 된다.
마찬가지로 홀수개이다 -> 무조건 1번이 이긴다
이를 코드로 옮기면 다음과 같다.
int towerBreakers(int n, int m) {
if (m==1){
return 2;
}
if (n%2==0){
return 2;
}
else
{
return 1;
}
}
문제를 풀면서 느끼는게 HackerRank는 지능테스트 같은 느낌의 문제가 꽤 있다. 나름대로 신선하다.
'프로그래밍 > 알고리즘+코딩테스트' 카테고리의 다른 글
HackerRank/Grid Challenge (0) | 2022.04.04 |
---|---|
HackerRank/Caesar Cipher (0) | 2022.04.02 |
HackerRank/Zig Zag Sequence (0) | 2022.03.30 |
HackerRank/Flipping the Matrix (0) | 2022.03.30 |
HackerRank/Counting Sort 1 (0) | 2022.03.29 |