문제 : 카드를 뒤집어라 !
문제 : 뒤집을 카드가 더는 없을 때 뒷면이 위를 향한 카드의 번호를 구하시오.
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 입니다
16의 약수는 1,2,4,8,16 입니다.
'프로그래밍 > 알고리즘' 카테고리의 다른 글
이진수 값 구하기 (0) | 2022.07.09 |
---|---|
순열 N개의 문자열중 R개를 나열할 수 있는 경우를 모두 출력 (0) | 2022.07.04 |
백준 11098 첼시를 도와줘 (0) | 2021.11.20 |
백준 셀프넘버(4673) 문제 (0) | 2020.03.28 |
알고리즘 - 대칭수 찾기 ! (0) | 2020.03.07 |