WalkerJei's Lifelog

백준알고리즘 31403번 A + B - C C# 본문

소프트웨어 개발/코딩테스트(기성 문제)

백준알고리즘 31403번 A + B - C C#

WalkerJei 2025. 5. 7. 20:23

세부 정보

  • 사이트: 백준알고리즘
  • 번호: 31403
  • 문제명: A + B - C
  • 언어: C#
  • 분류: 수학, 문자열, 사칙연산
  • 비고: 원문은 한국어

 

문제

JavaScript에서 +, −은 수에 대해서는 일반적인 의미의 덧셈 뺄셈의 의미를 가지고 있습니다. 하지만 문자열에 대해서 +는 두 문자열을 이어붙이라는 의미이고, −는 양쪽 문자열을 수로 해석한 이후에 빼라는 의미입니다.

 A,B,C를 각각 수와 문자열로 생각했을 때 A+B−C를 출력하세요.

 

입력

첫 줄에는 정수 A가 주어집니다. (1≤A≤1000)

둘째 줄에는 정수 B가 주어집니다. (1≤B≤1000)

셋째 줄에는 정수 C가 주어집니다. (1≤C≤1000)

주어지는 모든 수는 0으로 시작하지 않는 양의 정수입니다.

 

출력

첫 줄에는 A,B,C를 수로 생각했을 때, A+B−C를 출력하세요.

둘째 줄에는 A,B,C를 문자열로 생각했을 때, A+B−C를 출력하세요.

 

풀이

Convert.ToInt32()는 해당 변수 내용을 정수로 바꾸는 데 사용했다.

Convert.ToString()은 해당 변수 내용을 문자열로 바꾸는 데 사용했다.

양쪽 문자열을 수로 해석해 빼더라도 정수 C를 문자열로 바꾸고 다시 정수로 바꿀 필요는 없다.

using System.Collections;

class PrimeNumber
{
    static void Main(String[] args)
    {
        StreamReader sr = new StreamReader(Console.OpenStandardInput());
        StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());

        // 정수 3개를 입력받아 저장
        int[] abc = new int[3];

        // 정수 3개를 입력
        for(int i = 0; i < abc.Length; i++)
            abc[i] = Convert.ToInt32(sr.ReadLine());

        // 정수 3개를 모두 수로 생각했을 때 출력
        sw.WriteLine(abc[0] + abc[1] - abc[2]);
        // 정수 3개를 모두 문자열로 생각했을 때 출력
        // 여기서 +는 두 문자열을 이어붙이는 것이며,
        // -는 양쪽 문자열을 수로 해석해 빼는 의미다.
        sw.WriteLine(Convert.ToInt32(Convert.ToString(abc[0]) + Convert.ToString(abc[1])) - abc[2]);
    
        sr.Close();
        sw.Close();
    }
}

 

후기

이 문제를 처음 접해본 사람이라면 정수 C에 해당하는 부분까지 문자열로 바꾸고 다시 정수로 바꿔야 하는 것으로 생각할 수도 있다. 하지만 굳이 이러한 처리를 하지 않아도 정답이 나오는 데 지장이 가지 않는다. 프로그래밍에서 최적화를 잘 하려면 주석은 달아도 사족은 달지 않는 것이 좋다. 불필요하게 작성된 코드는 처리되는 시간과 메모리 공간도 잡아먹는다. 때문에 출력을 할 때도 변수를 따로 선언해 연산하지 않고 바로 연산한 것을 출력하게 구현했다.