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

[백준] C# : 곱셈 (2588번)

by TODAYCODE 2021. 7. 22.
반응형

백준 단계별로 풀어보기 1단계 입출력과 사칙연산 11번 문제

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

 

문제의 핵심

1. 문자열에서 특정한 위치의 글자를 가져올 수 있는가?

 

 

 

이번 문제는 단순하게 "C#의 문법을 아는가?"를 넘어서

"생각을 좀 더 넓고 깊게 할 수 있는가?" 를 묻고 있다.

 

사실은 그러기엔 너무 쉬운 문제이긴 하지만,

2단계부터는 단순히 문법만으로는 풀 수 없을 것이다를

알리는 시작과도 같은 문제이다.

 


푸는 방법은 다양하게 존재하지만,

1단계를 넘어서는 문법은 최대한 사용하지 않고 풀었다.

 

 

 

우리가 알고 있는 곱셈을 하는 방식대로 계산할 때

결과값들을 차례로 출력하는 문제이다.

 

두번째로 입력된 숫자의 1의자리, 10의자리, 100의 자리 숫자를 따로 가져와서

첫번째로 입력된 숫자에 곱하면 된다.

 

입력을 받은 문자열은 배열형태처럼 저장되기 때문에

[숫자] 의 형태로 해당위치의 글자를 가져올 수 있다.

 

 

또한, string은 int.Parse를 사용해서 int로 변경할 수 있었지만,

딱 한글자만 존재하는 Char 형식인 경우에는

(int)Char.GetNumericValue(b[2])

다음과 같은 방식으로 int형태로 바꿔줄 수 있다.

int.Parse를 암기하는 것처럼, 그냥 외우면 된다..

 

 

1의자리 숫자는 b[2]

10의자리 숫자는 b[1]

100의자리 숫자는 b[0]

이므로 차례로 가져와서 곱하면 된다.

 

 

정답 코드

using System;
using static System.Console;

namespace 사칙연산11번
{
    class 곱셈
    {
        static void Main(string[] args)
        {
            string a = ReadLine();
            string b = ReadLine();
            
            WriteLine(int.Parse(a)* (int)Char.GetNumericValue(b[2]));
            WriteLine(int.Parse(a) * (int)Char.GetNumericValue(b[1]));
            WriteLine(int.Parse(a) * (int)Char.GetNumericValue(b[0]));
            WriteLine(int.Parse(a) * int.Parse(b));
        }
    }
}
반응형

댓글