카테고리 없음

[파이썬] max 정수 붙여쓴 값: 두 수의 연산값 비교하기

neullo 2024. 3. 13. 10:50

두 수의 연산값 비교하기

 

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

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

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

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

def combine_numbers(a, b):
    # 연산 ⊕를 구현하는 함수
    return int(str(a) + str(b))

def solution(a, b):
    # a ⊕ b 계산
    ab_combined = combine_numbers(a, b)
    # 2 * a * b 계산
    twice_a_times_b = 2 * a * b
    
    # a ⊕ b와 2 * a * b 중 큰 값을 반환
    return max(ab_combined, twice_a_times_b)

# 예시 테스트
print(solution(12, 3))  # 출력: 36
print(solution(3, 12))  # 출력: 312

 

이걸 간단하게 이렇게 표현할 수 있다. Max 함수를 이용해서 푸는 것인데 그 안에는 비교할 대상 두 개가 들어가고 그걸 int 정수로 바꾼 후 비교하는 것이다.

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

 

 


두수 합치고 비교하기

 

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다. 12 ⊕ 3 = 123 3 ⊕ 12 = 312 양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요. 단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.

 

이것을 구현하는 방식은 다양할 수 있는데 먼저 쉬운 버전으로 보고, 자세한 버전을 보자. 위에서 한 것과 같이 간단하게 문자열로 받은 두 개를 비교하도록 가로 안에 넣고 그걸 int 정수로 바꾼 후 가로 밖에서 Max 함수를 이용해 비교하는 것이다. 

 

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

 

이렇게 간단하게 푼 사람도 있었다. Str으로 바꿀수도 있지만 창의적으로 생각하면 최종단계에서 f로 출력할 때 어떤 식으로 출력하고 싶은지를 f"{a}{b}" 형태로 문자열 나열. 그러면 나열된 최종형태를 Max로 비교 후 int 사용해 정수로 바꾼다.

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

 

아래와 같이 엄청 길게도 할수있다. 하지만 코딩은 최대한 이 애 하고 싶고 간단히 하는 게 좋은 것 같다.

def concatenate_and_compare(a, b):
    # ⊕ 연산을 수행하여 두 수를 붙여서 반환
    ab = int(str(a) + str(b))
    ba = int(str(b) + str(a))
    return ab, ba

def solution(a, b):
    # 주어진 두 수에 대해 ⊕ 연산을 수행하여 결과를 비교
    ab, ba = concatenate_and_compare(a, b)
    if ab >= ba:
        return ab
    else:
        return ba

 

 


합치는 방식

만약 apple pen 이라는 인풋이 있다고 생각해 보자. 공백을 기준으로 a 값에는 apple 그리고 b 값에는 pen을 넣어서 붙여준다고 생각해 보자. 위에서는 두 가지 방식을 배웠다. 하나는 str으로 만들어 문자로 받고, 이후에 정수로 출력되게 Int로 넣는 것. 혹은 f 이용해서 f"{a}{b}"같은 형태로 출력하는 것. 그리고 정수로 Int 함수 이용해 바꾸는 것 

apple pen
applepen

첫줄부터 이해가 안될 수 있다. 자세히 뜯어보면 입력받고, strip 사용해 모든 공백 없애고, split 사용해 공백(' ') 기준으로 분리하기

  1. input(): 사용자로부터 입력을 받습니다. 이 함수는 사용자가 입력한 값을 문자열로 반환합니다.
  2. .strip(): 입력된 문자열의 양쪽에 있는 공백을 제거합니다. 사용자가 입력한 문자열에서 양쪽에 있는 모든 공백을 없앱니다.
  3. .split(' '): 문자열을 공백을 기준으로 분리합니다. 공백을 기준으로 분리된 부분 문자열들은 리스트에 담겨 반환됩니다.
  4. str1, str2 = ...: 분리된 부분 문자열들을 str1과 str2에 순서대로 할당합니다. 입력된 문자열을 공백을 기준으로 분리한 결과 중 첫 번째 부분 문자열이 str1에, 두 번째 부분 문자열이 str2에 할당됩니다.

이렇게 하면 변수 str1과 str2에는 입력된 문자열에서 양쪽 공백을 제거한 후, 공백을 기준으로 분리된 부분 문자열이 할당된다.

str1, str2 = input().strip().split(' ')
print(str1 + str2)