JAVA

369 게임을 자바로 구현하면서 만난 작은 함정

개발자 누렁이 2025. 4. 15. 22:16
728x90
반응형

 

 

오늘은 자바로 369 게임을 만들다가 작은 함정(?)을 하나 만났다.

숫자를 받아서, 십의 자리와 일의 자리를 보고  
각 자리 숫자가 3의 배수이면 "@" 또는 "@@"를 출력하는 간단한 게임!

### 👉 내가 만든 코드 (정상 작동하는 버전)

```java
int first = num / 10;    // 십의 자리
int second = num % 10;   // 일의 자리

if ((first % 3 == 0) && (second % 3 == 0)) 
	return "@@";
else if ((first % 3 == 0) || (second % 3 == 0))
	return "@";
else 
	return num + "";

 

3의 배수인지 정확히 판단하려면 % 3 == 0을 써야 한다는 걸 다시 한 번 실감!
그런데... 아래처럼 잘못 쓴 코드도 있었음 

 

if ((num / 10) / 3 == 0) {
	System.out.println("@");
}

 

언뜻 보면 괜찮아 보이지만, 이건 십의 자리를 3으로 나눈 이 0인지 확인하는 코드라
정작 3의 배수인 경우에도 false가 나올 수 있다.

예를 들어 num이 30일 때:

  • (30 / 10) = 3 → 3 / 3 = 1
  • 1 == 0 → false 

그래서 절대 안 된다! 3의 배수를 판단할 땐 무조건 % 3 == 0!!

 

 정리

  • 3의 배수인지 판단하고 싶을 때는 % (나머지 연산자)를 쓰자!
  • / (나눗셈)는 을 구하므로 판별이 안 됨
  • 자바로 게임 만들 때 자잘한 부분도 신경 써야 재밌다 

다음엔 이 로직을 활용해서 진짜 1~100까지 돌아가는 369 게임도 만들어볼 예정!
함정도 있었지만 덕분에 %와 /의 차이 확실히 기억하게 됐다.

 

 

728x90
반응형