백준 온라인 코딩 문제풀이
Baekjoon Online Judge
Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.
www.acmicpc.net
코드 참고
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 |