문제 출처:https://www.acmicpc.net/problem/17210
문제 분석
문제를 처음 본 순간 2와 3의 배수에는 각각 같은 방식으로 문을 열수 있다고 한 부분이 이상했습니다. 2의 배수 2, 4, 6, 8... 과 3, 6, 9 ... 라고 할 때 2와 3은 항상 다른 값이 올 텐데 곂치는 6이 온다면 둘 중 하나의 조건에는 성립하지 못한다는 것을 캐치했습니다. 따라서 Love is open door라는 문구를 출력하는 부분은 5보다 높은 N이 올 때이며, 나머지는 엇갈려서 0과 1을 출력하면 되겠다고 생각했습니다.
코드는 다음과 같습니다:
#include <iostream>
using namespace std ;
int main(){
long long N ;
bool is_pull ;
cin >> N >> is_pull ;
// 2 & 3 => 6이상이면 항상 실패
if(5 < N){
cout << "Love is open door" << endl ;
return 0 ;
}
for(int i = 1 ; i < N ; i++){
is_pull = (is_pull ? 0 : 1) ;
cout << (is_pull ? 1 : 0) << endl ;
}
return 0 ;
}
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/BackJoon/HPS/P17210_DoorDoorDoor.cpp
훈수 및 조언은 언제든 환영입니다.