본문 바로가기
C#/C# : Baekjoon

[백준] C# : 숫자의 개수 (2577번)

by TODAYCODE 2021. 7. 29.
반응형

백준 단계별로 풀어보기 5단계 1차원배열 3번문제

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

문제의 핵심

1. 문자열과 정수형을 오갈 수 있는가?

2. 각 숫자의 갯수를 담당하는 배열 생성하기

 


문제는 그렇다치더라도 정답을 출력하는 방식이 독특하다.

0 ~ 9까지 해당하는 숫자가 총 몇개가 존재하는 지를

한줄에 하나씩 출력하는 것이다.

 

따라서, 길이가 10인 배열을 생성하고,

배열의 각 원소가 숫자를 하나씩 담당하여 몇개가 존재하는지를 저장하면 된다.

그리고나서 for문을 돌려서 배열의 원소값을 하나씩 출력하면 된다.

 

계산값을 string으로 변환해서 string의 길이만큼 for문을 돌려주고

문자열의 각 요소를 0~9까지 숫자 중 무엇과 일치하는지를 찾아내면 된다.

한마디로 이중for문을 사용하면 된다는 뜻이다.

 

이 아이디어를 떠올렸다면 금방 해결 할 수 있지만,

이 생각을 못하면 한참을 고민하게 될 수도 있는 문제이다.

 

 

 

그리고 문제를 풀다보면

Char형태를 int형태로 변환해줘야하는 상황이 발생하는데,

int.Parse로는 string만 변환할 수 있다.

char형태는 다음과 같은 방식으로 int형태로 바꿀 수 있다.

(int)Char.GetNumericValue()

 

 

 

정답 코드

using System;
using static System.Console;

namespace _1차원배열3
{
    class Program
    {
        static void Main(string[] args)
        {
        // 3가지 자연수를 각각 입력 받는다.
            string a = ReadLine();
            string b = ReadLine();
            string c = ReadLine();
            
            // 입력된 숫자들의 곱한 결과를 num에 저장한다.
            int num = int.Parse(a) * int.Parse(b) * int.Parse(c);
            
            // num을 문자열로 변환한 tmep 생성
            string temp = num.ToString();
            // 정답을 출력할 길이가 10인 answer 배열 생성
            int[] answer = new int[10];
            
            // 이중 for문을 사용해서 num의 숫자를 체크한다
            for (int i = 0; i < temp.Length; i++)
            {
            	// 숫자 0부터 9까지 체크한다.
                for (int j = 0; j < 10; j++)
                {
                // temp의 각 자리수의 숫자가 0~9까지 중 무슨 숫자인지 검사
                    if ((int)Char.GetNumericValue(temp[i]) == j)
                    {
                    // 일치하는 숫자가 있다면 해당 숫자의 개수를 저장하는 배열을 증가시킴.
                        answer[j]++;
                    }
                }
            }
            // 정답 출력
            for (int i = 0; i < answer.Length; i++)
            {
                WriteLine(answer[i]);
            }
        }
    }
}

 

 

반응형

댓글