1206수업12일차(JAVA) - Test02(8갯수 찾기)

2023. 12. 6. 11:472023.11.21-2024.05.31

 

 package dec06;

 

 /*

  *https://codingdojang.com/scode/393

 1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가?

 

 8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라

 8이라는 숫자를 모두 카운팅 해야한다.

 (※ 예를들어 8808은 3, 8888은 4로 카운팅 해야 함)

  * */

 public class Test02 {

 

  public static void main(String[] args) {

  int count = 0;

 

  for (int i = 1; i < 10000; i++) {

 

  String value = String.valueOf(i); // 숫자 -> 문자

 

  for (int j = 0; j < value.length(); j++) {// 8888->4

  if (value.charAt(j) == '8') {

  count++;

  }

 

  }

 

  }

  System.out.println("8의 총 합은: " + count);

=>방법1

String value = String.valueOf(i);

주어진 코드는 정수형 변수 i의 값을 문자열로 변환하는 코드입니다.

String.valueOf(i) 메서드는 정적 메서드로, 입력된 값을 해당 자료형의 문자열 표현으로 반환합니다.

이 경우에는 정수형 변수 i를 문자열로 변환한 결과를 value 변수에 저장하고 있습니다.

이렇게 하면 정수를 문자열로 변환하여 문자열 변수에 저장할 수 있습니다.

 

이후에 중첩된 두 번째 for 루프에서는 value에 저장된 문자열을 한 글자씩 가져와서 검사합니다.

이때, if (value.charAt(j) == '8')는 문자열의 각 글자가 '8'인지를 검사하고, '8'인 경우 count를 증가시킵니다.

이렇게 함으로써 1부터 9999까지의 각 숫자에 대해 그 안에 포함된 '8'의 개수를 세는 것이 목적입니다.

 

  System.out.println("8의 총 합은: " + count);

 

  count = 0;

  for (int i = 1; i < 10000; i++) {

  if (i % 10 == 8) {

  count++;

  }

  if ((i / 10) % 10 == 8) {

  count++;

  }

  if ((i / 100) % 10 == 8) {

  count++;

  }

  if ((i / 1000) % 10 == 8) {

  count++;

  }

  }

  System.out.println(count);

=>방법2

 

숫자 연산 활용

각 숫자를 10으로 나누어 나머지가 8인 경우, 10으로 나누어 몫을 구하고

나머지가 8인 경우, 100으로 나누어 몫을 구하고

나머지가 8인 경우, 1000으로 나누어 몫을 구하고

나머지가 8인 경우를 확인하여 '8'의 개수를 세는 방법입니다.

 

여러 if 문을 사용하여 숫자를 각 자리수 별로 확인하고, '8'이면 count를 증가시킵니다.

 

 

 8의 총 합은: 4000

 4000