BaekJoon[C#]

문자열 단계 2675

wny0320 2022. 9. 26. 15:41

백준 온라인 코딩 문제풀이

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 

코드 참고

https://replit.com/@wny0320

 

wny0320 (박 상운)

Run code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter.

replit.com

 

11654, 11720, 10809, 2675 중 일부에 대해서만 다룸

 

11654는 단순한 아스키 코드 출력이므로 패스

 

10809는 항상 쓰던 IndexOf 메소드를 사용하면 쉽게 할 수 있어서 패스


11720

using System;
class Program
{
    public static void Main(string[] args)
    {
        int times = Int32.Parse(Console.ReadLine());
        string Input = Console.ReadLine();
        int result = 0;
        for(int i = 0; i < times; i++)
        {
            result += (int)char.GetNumericValue(Input[i]);
        }
        Console.WriteLine(result);
    }
}

형 변환을 되게 많이해야 하던 문제

 

string 형식으로 문자열을 받은 후 해당 값을 char.GetNumbericValue 매서드를 이용

 

Input[index]의 값은 char 형식으로 문자 하나만 나옴

 

만약 Input이 1520 이면 index에 따라 '1', '5', '2', '0'으로 문자가 나옴

 

이 문자를 (int)로 명시적 형 변환을 한다면 단순히 '1', '5', '2', '0' 각각 문자에 대한 아스키 코드값이 출력

 

따라서 char.GetNumbericValue 메서드를 사용하여 숫자를 받아옴

 

char.GetNumbericValue는 double 형식으로 값을 반환 하므로 int 형식으로 명시적 형 변환을 하여 result 값에 더함

 


2675

using System;
class Program
{
    public static void Main(string[] args)
    {
        int times = Int32.Parse(Console.ReadLine());
        string[,] Input = new string[times,2];
        for(int i = 0; i < times; i++)
        {
            string[] buff = Console.ReadLine().Split();
            Input[i, 0] = buff[0];
            Input[i, 1] = buff[1];
        }
        for(int i = 0; i < times; i++)
        {
            for (int j = 0; j < Input[i,1].Length; j++)
            {
                for (int k = 0; k < Convert.ToInt32(Input[i,0]); k++)
                {
                    Console.Write(Input[i,1][j]);
                }
            }
            Console.Write("\n");
        }
    }
}

사실 더 편하게 할 수 있었을거 같지만 2차원 배열을 이용하여 해결하였음

 

테스트 케이스를 times에 받고 Input에 반복 횟수와 문자열을 받기 때문에 [times, 2] 크기를 할당

 

문자열을 임시로 buff에 받아 [i,0] [i,1]에 각각 값 추가

 

입력받자마자 출력되는 경우를 막기 위해 2차원 배열을 활용

 

3중첩 반복문

 

1. 테스트 갯수인 times 만큼 반복

2. 입력받은 문자열의 길이만큼 반복

3. 입력받은 반복 횟수만큼 반복

 

으로 입력받은 반복 횟수만큼 문자열 index 0번부터 끝까지 반복하고 출력, \n 출력 후 테스트 케이스 반복

'BaekJoon[C#]' 카테고리의 다른 글

문자열 단계 5622  (0) 2022.09.28
문자열 단계 1152  (0) 2022.09.27
함수 1065  (0) 2022.09.25
1차원 배열 4344  (0) 2022.09.24
1차원 배열 2562  (0) 2022.09.23