728x90
문제링크
https://www.acmicpc.net/problem/1357
문제
어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다.
Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자.
예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev(X) = 1이다.두 양의 정수 X와 Y가 주어졌을 때, Rev(Rev(X) + Rev(Y))를 구하는 프로그램을 작성하시오
조건
시간제한 : 2초
메모리 제한 : 128 MB
입력
첫째 줄에 수 X와 Y가 주어진다. X와 Y는 1,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 문제의 정답을 출력한다.
문제정리
1. X=100 일때, Rev(X) = 1이고 Rev(X) != 001이 되면 안됩니다.
2. Rev(Rev(X) + Rev(Y)) 를 구해야합니다.
이 문제의 경우 간단하게 내부 함수를 이용하여 풀 수 있는 문제입니다.
string을 Reverse 하기 위해 Array Char로 바꿔주고 Array Reverse 한 후 다시 string으로 형 변환하였습니다.
string을 더할 때 int로 형변환 해주었으며 마지막 출력 때 한번더 int로 형변환 해줍니다.
마지막 출력 하기 전 int로 형변환 해준 이유는 "001" 같은 예외를 차단하기 위하여 형변환을 해주었습니다.
Reverse 해주는 함수는 총 2개로 Array의 Reverse를 이용한 방식과 char[]로 변경하여 두 인덱스의 값을 반복해서 바꿔주는 메소드입니다.
C# 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
static void Main(string[] args)
{
// https://bokhead.tistory.com/
// 1357
StreamWriter writer = new StreamWriter(Console.OpenStandardOutput());
StreamReader reader = new StreamReader(Console.OpenStandardInput());
string[] input = reader.ReadLine().Split();
// 문자열을 Reverse 시킵니다.
string X = Reverse2(input[0]);
string Y = Reverse2(input[1]);
// 문자열을 int 형변환하여 더해주고 다시 문자열로 변경합니다.
string result = (int.Parse(X) + int.Parse(Y)).ToString();
// int로 바꿔주는 이유는 "001" -> 1로 변경시켜주기 위해서입니다.
WriteLine(int.Parse(Reverse(result)));
writer.Close();
reader.Close();
// Reverse 해주기위한 함수 선언
static string Reverse(string str)
{
char[] chars = str.ToCharArray();
Array.Reverse(chars);
return new string(chars);
}
static string Reverse2(string str)
{
char[] chars = str.ToCharArray();
for (int i = 0; i < str.Length / 2; i++)
{
char ch = chars[i];
chars[i] = chars[str.Length - i - 1];
chars[str.Length - i - 1] = ch;
}
return new string(chars);
}
}
|
cs |
읽어주셔서 감사합니다 오늘도 즐거운 하루 되세요.
728x90
'[C#] 백준 (알고리즘) > 브론즈 문제' 카테고리의 다른 글
[백준 - C#] 1350번 문자열 (0) | 2022.09.11 |
---|---|
[백준 - C#] 1356번 유진수 (0) | 2022.09.10 |
[백준 - C#] 10817번 세 수 / 2752 세수정렬 (4) | 2022.09.05 |
[백준 - C#] 1236번 성 지키기 (0) | 2022.09.04 |
[백준 - C#] 1252번 이진수 덧셈 (6) | 2022.09.01 |