본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival] 25. 숫자에 사용되는 대시('-')의 개수 계산하기

by 제이투더문 2024. 7. 5.

 

 안녕하세요, 작가 J입니다. 이번에는 숫자를 입력받아 해당 숫자를 대시('_') 문자로 출력할 때 사용되는 대시의 개수를 계산하는 프로그램을 작성해 보겠습니다. 이 예제는 조건문을 활용하여 특정 조건에 따라 값을 누적하는 방법을 이해하는 데 도움이 됩니다.

 

[Java Festival 25] 숫자에 사용되는 대시('-')의 개수 계산하기

 

 그림과 같이 대시('-') 문자로 구성된 형태의 숫자를

주어진 숫자와 같이 출력하고 싶을 때 사용되게 되는

대시의 개수를 출력하는 프로그램을 작성하라

 

 

 

코드 풀이 1: 조건문을 사용한 방식

package Ex;

import java.util.Scanner;

public class Ex25 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 사용자로부터 숫자를 입력받기
        System.out.print("첫자리 0을 제외한 숫자를 입력해주세요 >> ");
        String[] str = sc.next().split("");
        
        int sum = 0;
        
        // 각 숫자에 대한 대시 개수를 계산하여 합산
        for (String string : str) {
            switch (string) {
                case "1":
                    sum += 2;
                    break;
                case "2":
                case "3":
                case "5":
                    sum += 5;
                    break;
                case "4":
                    sum += 4;
                    break;
                case "6":
                case "9":
                case "0":
                    sum += 6;
                    break;
                case "7":
                    sum += 3;
                    break;
                case "8":
                    sum += 7;
                    break;
            }
        }
        
        // 결과 출력
        System.out.println("대시('-')의 총 합 >> " + sum);
        sc.close();
    }
}

 

1. 사용자 입력 받기

  • System.out.print("첫자리 0을 제외한 숫자를 입력해주세요 >> ");
  • 사용자가 입력한 숫자를 문자열 배열로 변환하여 str에 저장합니다.

2. 대시의 개수 계산

  • for (String string : str) { ... }
  • 각 숫자에 대해 switch 문을 사용하여 대시의 개수를 누적합니다.

3. 결과 출력

  • System.out.println("대시('-')의 총 합 >> " + sum);

 

코드 풀이 2: 배열을 사용하여 대시의 개수 저장

package Ex;

import java.util.Scanner;

public class Ex25Alternative {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 사용자로부터 숫자를 입력받기
        System.out.print("첫자리 0을 제외한 숫자를 입력해주세요 >> ");
        String input = sc.next();
        
        // 각 숫자에 대응하는 대시의 개수를 배열로 저장
        int[] dashCount = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
        int sum = 0;
        
        // 입력된 각 숫자에 대해 대시의 개수를 합산
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i); // 입력된 문자열에서 각 문자를 가져오기
            int index = Character.getNumericValue(c); // 문자를 숫자로 변환하여 배열 인덱스로 사용
            sum += dashCount[index];
        }
        
        // 결과 출력
        System.out.println("대시('-')의 총 합 >> " + sum);
        sc.close();
    }
}

 

1. 대시의 개수 계산

  • int[] dashCount = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};: 각 숫자에 대응하는 대시의 개수를 저장한 배열을 선언합니다.
  • for (int i = 0; i < input.length(); i++) { ... }
  • 입력된 문자열에서 각 문자를 가져와 Character.getNumericValue를 사용하여 숫자로 변환한 후, 해당 인덱스의 대시 개수를 누적합니다.

 

마무리

 이번 예제에서는 숫자를 입력받아 해당 숫자를 대시('_') 문자로 출력할 때 사용되는 대시의 개수를 계산하는 두 가지 방법을 다뤄보았습니다. 첫 번째 방법은 조건문을 사용한 방식이며, 두 번째 방법은 배열을 사용하여 대시의 개수를 저장한 후, 문자열의 각 문자를 숫자로 변환하여 배열 인덱스로 사용하는 방식입니다. 두 가지 방법 모두 이해하시는데 도움이 되길 바랍니다.

 

 프로그래밍을 시작하는 모든 분께 이 예제가 도움이 되길 바랍니다. 앞으로도 다양한 유형의 문제를 통해 여러분의 학습을 도울 수 있도록 노력하겠습니다. 감사합니다!