728x90
반응형

안녕하세요.
이번 포스팅은 프로그래머의 뇌를 단련하는 수학퍼즐 3번문제인 카드를 뒤집어라! 를 풀어보겠습니다
1~100의 번호가 쓰인 100장의 카드가 순서대로 나열되어 있다.
모든 카드는 뒷면이 위를 향한 상태로 놓여 있다.
한 사람이 2번 카드부터 1장 간격으로 카드를 뒤집어 나간다.
그러면 2, 4, 6, ... , 100번 카드의 앞면이 나타나게 된다.
그 다음으로, 다른 사람이 3번 카드부터 2장 간격으로 카드를 뒤집어 나간다( 뒷면이 위를 향한 카드는 앞면이 보이게 되고 앞면이 위를 향한 카드는 뒷면이 보이게 된다.)
다시 다른 사람이 4번 카드부터 3장 간격으로 카드를 뒤집어 나간다.
이렇게 n번째의 카드부터 n-1장 간격으로 카드를 뒤집는 작업을 뒤집을 카드가 더는 없을 때까지 계속한다고 가정한다.
문제
뒤집을 카드가 더는 없게 되었을 때 뒷면이 위를 향한 카드의 번호를 모두 구해보아라.
package cardReverse;
public class CardReverse {
public static void main(String[] args) {
int[] arr = new int[100];
for (int i = 0; i < arr.length; i++) arr[i] = 0;
for (int i = 1; i < arr.length; i++) {
for (int j = i; j < arr.length;) {
if (arr[j] == 0) arr[j] = j + 1;
else arr[j] = 0;
j += i + 1;
}
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 0) System.out.println("카드가 뒤집어 진 곳 : " + (i + 1));
}
}
}
정답 :
카드가 뒤집어 진 곳 : 1
카드가 뒤집어 진 곳 : 4
카드가 뒤집어 진 곳 : 9
카드가 뒤집어 진 곳 : 16
카드가 뒤집어 진 곳 : 25
카드가 뒤집어 진 곳 : 36
카드가 뒤집어 진 곳 : 49
카드가 뒤집어 진 곳 : 64
카드가 뒤집어 진 곳 : 81
카드가 뒤집어 진 곳 : 100
728x90
반응형
'알고리즘 > 수학 퍼즐' 카테고리의 다른 글
[수학 퍼즐 / java] 06.콜라츠 추측 (0) | 2021.03.23 |
---|---|
[수학 퍼즐 / java] 05. 아직도 현금으로 계산하다니! (0) | 2021.03.23 |
[수학 퍼즐 / java] 04. 막대 자르기 (0) | 2021.03.23 |
[수학 퍼즐 / java] 01.앞뒤가 같은 10진수 만들기 (0) | 2021.03.23 |
댓글