반응형
https://swexpertacademy.com/main/main.do
1. 해결방법
처음에 dfs방식처럼 모든 가능한 방법을 전부 돌면서 해결하려 했으나 잘 처리가 되지 않았고 오류가 있어서 처음부터
엘리스, 밥이 어떤방식으로 승리하는지 쭉 그려보았다 그랬더니 이러한 규칙을 발견할 수 있었다
1 = 밥 승리
2,3,4,5 엘리스 승리
6,7,8,9 밥 승리
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 엘리스 승리
이런식으로 1/ 4/ 4/ 16/ 16/ .....방식으로 승리가 번갈아가며 반복된다는 사실을 알 수 있었다.
2. 코드
#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
long long num;
int checknum = 0;
void check() {
checknum = 0;
long long temp = 1;
long long sum = 1;
while(sum < num){
if(!checknum){
temp *=4;
}
sum += temp;
checknum = !checknum;
}
}
int main(int argc, char** argv)
{
int test_case;
int T;
scanf("%d", &T);
for (test_case = 1; test_case <= T; ++test_case)
{
scanf("%llu", &num);
check();
printf("#%d %s\n", test_case, checknum?"Alice": "Bob");
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
3. 주의사항
long long을 scanf할때 llu를 사용하였다
반응형
'코딩테스트 > SW expert' 카테고리의 다른 글
[SW Expert] #1868 파핑파핑 지뢰찾기 (0) | 2020.01.22 |
---|---|
[SW Expert] #2814 최장 경로 (0) | 2019.12.31 |
[SW Expert] #1226 S/W 문제해결 기본 7일차 - 미로1 (0) | 2019.12.10 |
[SW Expert] #2817 부분수열의 합 (0) | 2019.12.06 |
[SW Expert] #1215 S/W 문제해결 기본 3일차 - 회문1 (0) | 2019.12.04 |