본문 바로가기
프로그래밍/알고리즘

알고리즘 - 카드 뒤집기

by 개발하는군인 2020. 3. 9.

문제 : 카드를 뒤집어라 !

 

 

문제 : 뒤집을 카드가 더는 없을 때 뒷면이 위를 향한 카드의 번호를 구하시오.

 

 

1~ 100까지의 번호가 쓰인 100장의 뒤 집어진 카드가 있습니다 .

한사람이 2번 카드부터 1장 간격으로 카드를 뒤집어 나갑니다. 그러면 2,4,6, ... ,100번의 카드의 앞면이 나타나고

그다음 사람이 3번 카드부터 2장 간격으로 카드를 뒤집어 나 갑니다 .

 

2,3,4, 8,9 .....   이렇게 n번째의 카드 부터 n-1장 간격으로 카드를 뒤집는 작업을 뒤집을 카드가 더는 없을 때까지 계속 

합니다.

 

 

 

 

문제풀이 :   카드의 수를 위한 반복문을 만들고  카드의 위치를 위한 반목문을 만들어 처리한다.

 

 

 

 

 

 

정답 :

 

 

 

 

 

PS :  답의 패턴을 보니  1~10 까지의  제곱수라는 것을 알수있습니다.

 

뒤집히는 작업은  홀수 번 실행하면 앞면 , 짝수 번 실행하면 뒷면이 나옵니다.

 

저희는 뒷면이 위에 있는 수를 찾기 위한 것이므로  짝수번 뒤집는 수를 찾으면 되는 것입니다.

 

뒤집는 동작이 일어나는 것은  그 수의 약수 일때고  그수의 약수의 개수가  1을 제외하고

 

홀수이면 되는 것입니다.

 

 

ex ) 12 의 약수는 1,2,3,4,6,12 입니다

숫자 12 카드 뒤집기

 

16의 약수는 1,2,4,8,16 입니다.

 

숫자 16 카드 뒤집기