
드디어 조건문에 도착했다. 처음 출력할 때도 생각보다 많이 틀렸는데 조건문이 오히려 더 간단하게 느껴졌다.
평소 자주쓰는 if문을 사용하면 아래와 같다.
string[] a = Console.ReadLine().Split();
int[] b = new int[a.Length];
for(int i=0; i<a.Length; i++){
b[i] = int.Parse(a[i]);
}
if(b[0] > b[1]) Console.WriteLine(">");
else if(b[0] < b[1]) Console.WriteLine("<");
else Console.WriteLine("==");
위 코드를 switch case문을 사용하여 풀이를 변경해 보고자 하였다.
microsoft의 공식 문서에서 아래와 같은 사용법이 있어서 사용해보았다.

하지만 결과는 컴파일 에러...

분명 예제와 같은 방식으로 작성하였는데 컴파일 에러가 나는 걸까? 백준의 C#이 최신화가 되어있지 않아서 문법자체가 다른걸까? 정확한 이유 예제 아래의 설명이었다.

case의 비교대상은 상수이어야 한다는 점이었다.
따라서 위의 예제는 직접적으로 b[0]에 대해서 비교하는 케이스를 넣는것이 아니라 비교 자체를 조건에 넣어서 그 결과가 맞는가 아닌가를 기준으로 switch case문을 작성해야했다.
CompareTo()메소드를 사용했는데, 문자열의 길이 비교에 쓰이는 메소드로만 생각했었는데 int형도 비교할 수 있었다.

string[] a = Console.ReadLine().Split();
int[] b = new int[a.Length];
for(int i=0; i<a.Length; i++){
b[i] = int.Parse(a[i]);
}
switch (b[0].CompareTo(b[1])){
case 1:Console.WriteLine(">");
break;
case -1:Console.WriteLine("<");
break;
default:Console.WriteLine("==");
break;
}