[프로그래머스/C#/Lv. 0] 더 크게 합치기

2024. 7. 11. 09:52공부

오늘의 문제는 '더 크게 합치기'

풀이가 어려운 문제는 아니지만 다른 사람의 풀이에서 좋은 코드가 있어 복습할 겸 포스트하려 한다.

 

[문제 설명]

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

  • 12 ⊕ 3 = 123
  • 3 ⊕ 12 = 312

양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.

단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.

 

[제한사항]

  • 1 ≤ a, b < 10,000

[입출력 예]

a b result
9 91 991
89 8 898

 

[나의 풀이]

using System;

public class Solution {
    public int solution(int a, int b) {
        int answer = 0;
        string str1 = a.ToString() + b.ToString();
        string str2 = b.ToString() + a.ToString();
        
        answer = (int.Parse(str1) >= int.Parse(str2)) ? int.Parse(str1) : int.Parse(str2);
        
        return answer;
    }
}

a와 b를 문자열로 변환하고 합친다음 다시 정수로 변환해 크기 비교를 해주었다.

여기서 평소에 쓰지 않던 '삼항 연산자'를 사용했다.

- 삼항 연산자: var tmp = {조건} ? {참(true)일 경우 return값} : {거짓(false)일 경우 return값}

 

[다른 사람의 풀이]

using System;

public class Solution {
    public int solution(int a, int b) 
    {
        int aNum = Int32.Parse($"{a}{b}");
        int bNum = Int32.Parse($"{b}{a}");
        return Math.Max(aNum, bNum);
    }
}

풀이 과정은 문자열로 더하고 정수로 변환해 값을 비교하는 것이지만 문자열보간과 Math 함수를 사용해 굉장히 간결하게 풀어내셨다! 

또 내가 사용한 int.Parse(string str)와 Int32.Parse(string str)이 어떤 차이인지 알아봐야겠다.