
일단 이번 문제를 쉽게 보고 그냥 생각대로 적으니 아래와 같이 작성되었다.
class Program {
static void Main(string[] args){
string firstLine = Console.ReadLine();
string secondLine = Console.ReadLine();
char[] secondChars = secondLine.ToCharArray();
int firstNum = int.Parse(firstLine);
int[] secondNums = new int[secondChars.Length];
for(int i=0; i< secondChars.Length; i++){
secondNums[i] = int.Parse(secondChars[i].ToString());
}
int result1 = firstNum * secondNums[2];
int result2 = firstNum * secondNums[1];
int result3 = firstNum * secondNums[0];
Console.WriteLine(result1);
Console.WriteLine(result2);
Console.WriteLine(result3);
Console.WriteLine(result1 + result2*10 + result3*100);
}
}
많은 곳에서 컴파일 에러가 발생했다.

Console.ReadLine()으로 읽을때 각 변수들이 null이 될 수도 있기 때문에 컴파일 에러가 발생했다.
이전까지 거의 똑같은 과정으로 문제를 풀어왔는데 갑자기 여기서만 null에러라니? 이해가 가지 않았다.
어쨋는 문제를 해결하기 위해 "?"를 추가하고 조건문을 더해서 코드를 늘어뜨렸더니 통과는 되었다.
class Program {
static void Main(string[] args){
string? firstLine = Console.ReadLine();
string? secondLine = Console.ReadLine();
if(firstLine != null && secondLine != null){
char[] secondChars = secondLine.ToCharArray();
int firstNum = int.Parse(firstLine);
int[] secondNums = new int[secondChars.Length];
for(int i=0; i< secondChars.Length; i++){
secondNums[i] = int.Parse(secondChars[i].ToString());
}
int result1 = firstNum * secondNums[2];
int result2 = firstNum * secondNums[1];
int result3 = firstNum * secondNums[0];
Console.WriteLine(result1);
Console.WriteLine(result2);
Console.WriteLine(result3);
Console.WriteLine(result1 + result2*10 + result3*100);
}
}
}
절대 이게 맞는게 아닌거같은데.. 어쨋든 통과했으니 상관없겠지 싶었지만, 다른사람들 코드를 이것저것 찾아보았다.
라무스님 블로그 포스팅의 이 코드는 아래와같았는데 따로 null체크를 하지 않았는데 통과 되었다.
using System;
namespace B3_02588번
{
internal class Program
{
static void Main(string[] args)
{
int a = int.Parse(Console.ReadLine());
string b = Console.ReadLine();
Console.WriteLine(a * int.Parse(b[2].ToString()));
Console.WriteLine(a * int.Parse(b[1].ToString()));
Console.WriteLine(a * int.Parse(b[0].ToString()));
Console.WriteLine(a * int.Parse(b));
}
}
}
으잉? 왜? 다시 원래코드로 돌아와서 다시 돌려보니 또 맞았다고 한다. 이해할 수 없는 백준의 세계였다.
숏코드에서 또 다른 코드를 봤을 때는 조금 충격이었다. 따로 전체 클래스나, Main함수를 작성하지 않았는데도 정상동작하였고, 코드 또한 훨씬 짧고 간결했다..
int a = int.Parse(Console.ReadLine());
string b = Console.ReadLine();
for (int i = 2; i >= 0; i--) Console.WriteLine(a * int.Parse(b[i].ToString()));
Console.WriteLine(a * int.Parse(b));
왜 난 이런생각은 못햇을까 for문을 좀 짧게 한줄로 적은건 그렇다 치지만, 이렇게 보니 너무 쉬운문제인데 나만 어렵게 푼것 같은 느낌이다.