본문 바로가기

코딩/Java

[Java] 369 게임 알고리즘

반응형

다들 한 번쯤 369 게임 해보셨죠?

369 게임의 규칙은 다음과 같습니다.

 

여러명의 사람이 1부터 숫자를 하나씩 말하는데,

3과 6, 9가 들어가는 숫자는 말하는 대신 박수를 쳐야 합니다.

이때 3과 6, 9가 들어가는 횟수만큼 박수를 쳐야 합니다.

 

예를 들면 36은 박수를 두 번 쳐야 합니다.

 

이 규칙대로, 자바를 이용해서 369 게임을 구현해보겠습니다.

 

한 가지 제한사항과 함게 369 게임의 규칙을 코드로 변환하겠습니다.

<<숫자는 1부터 99까지만 말할 수 있습니다>>

1. 반복문을 이용해 숫자를 1부터 99까지 증가시킵니다.

2. 숫자를 3으로 나눈 나머지가 0일때 "박수"를 출력합니다.

3. 숫자를 10으로 나눈 값을 3으로 나눈 나머지가 0일대 "박수를 출력합니다.

 

이를 코드로 변환하면 아래와 같습니다.

for (int i = 1; i < 100; i++){
    System.out.print(i);
    int a = i/10;
    int b = i%10;
    if(a % 3 == 0){
        System.out.print("박수");
    }
    if(b % 3 == 0){
        System.out.print("박수");
    }
    System.out.println();
}

정수형 변수 a는 순차적으로 증가하는 숫자 i를 10으로 나눈 몫입니다.

정수형 변수 b는 순차적으로 증가하는 숫자 i를 10으로 나눈 나머지입니다.

조건문을 이용해 a와 b를 3으로 나눈 나머지가 0일때, "박수"를 출력합니다.

 

단순히 i에 저장된 숫자를 3으로 나눈 나머지가 0일때 "박수"를 출력한다면,

두 자리 이상의 숫자의 십의자리 숫자에 대해서는 3, 6, 9를 판별할 수 없습니다.

따라서 십의자리 숫자와 일의자리 숫자를 각각 a와 b에 담아주었습니다.

 

만약 i에 저장된 숫자가 23이라면

a에는 23을 10으로 나눈 몫인 2가 저장됩니다.

b에는 23을 10으로 나눈 나머지인 3이 저장됩니다.

이 숫자들을 각각 3으로 나누면 "박수"가 한 번 출력됩니다.

반응형