자료구조, 알고리즘

프로그래머스 코딩테스트 연습 [더 크게 합치기]

shinetheworld 2025. 2. 21. 13:29

문제 설명

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

  • 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 result
9 91 991
89 8 898

 

입출력 예 설명

입출력 예 #1

  • a@b = 991 이고, b@a = 919 입니다. 둘 중 더 큰 값은 991이므로 991을 return 합니다.

입출력 예 #2

  • a@b = 898 이고, b@a = 889 입니다. 둘 중 더 큰 값은 898이므로 898을 return 합니다.

해결

내 풀이

def solution(a, b):
    answer1 = str(a) + str(b)
    answer2 = str(b) + str(a)
    if answer1 > answer2:
        answer = answer1
    elif answer1 < answer2:
        answer = answer2
    elif answer1 == answer2:
        answer = answer1
    return int(answer)

 

다른 풀이

다른 풀이 #1

def solution(a, b):
    return int(max(f"{a}{b}", f"{b}{a}"))

 

다른 풀이 #2

def solution(a, b):
    return max(int(str(a)+str(b)), int(str(b)+str(a)))

 

새로 알게 된 점

다른 풀이 #1 에서 f{}를 이용해 문자열끼리도 크기 비교 가능

다른 풀이 #2 에서 int(max()) 보다 max(int())가 더 나은 형태