[백준] 1330번 두 수 비교하기

권태형·2023년 11월 26일

알고리즘

목록 보기
9/33

드디어 조건문에 도착했다. 처음 출력할 때도 생각보다 많이 틀렸는데 조건문이 오히려 더 간단하게 느껴졌다.

평소 자주쓰는 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;
}
profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글