복대가리의 개발

[C#] 백준 (알고리즘)/브론즈 문제

[백준 - C#] 1357번 뒤집힌 덧셈

복대가리 2022. 9. 9. 09:12
728x90

문제링크

https://www.acmicpc.net/problem/1357

 

1357번: 뒤집힌 덧셈

어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev(

www.acmicpc.net

 

문제

어떤 수 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