본문 바로가기

코드업 문제집 파이썬 if~else 1205 : 최댓값

관리하수달 2026. 9. 6.

[문제]

두 실수 a, b가 입력되면 그 두수를 더하거나 빼거나 곱하거나 나누거나 제곱을 해서 가장 큰 수를 출력하시오.

예를 들어 1과 2가 입력되면,

1+2 = 3   , 2+1 = 3

1 - 2 = -1,   2 - 1 = 1

1 * 2 = 2,    2 * 1 = 2

1 / 2 = 0.5,   2 / 1 = 2

12=1 ,   21 = 2

따라서 최댓값은 3이다.

 

[문제 해설(핵심)]

두 수로 가능한 여러 계산 결과를 전부 구한 다음, 그중 가장 큰 값을 찾는 문제

a + b
a - b
b - a
a * b
a / b
b / a
a ** b
b ** a


[문제풀이 1 - if else 사용]

계산 결과 하나를 result에 넣어두고 계산 결과가 result보다 큰지 하나씩 비교.

 

현재 result보다 크다
        ↓
result를 그 값으로 바꿈

현재 result보다 작다
        ↓
그대로 둠

 

f" " : 문자열 안에 변수를 넣을 수 있게 하는 f-string(문자열 안에 변수 값을 바로 넣을 수 있게 해주는 파이썬 문법)

{result} : result 변수의 값을 넣음.

: → 출력 형식을 지정

.6 → 소수점 아래 6자리까지

f → 실수 형태로 출력

a, b = map(float, input().split())

result = a + b

if a - b > result:
    result = a - b

if b - a > result:
    result = b - a

if a * b > result:
    result = a * b

if a / b > result:
    result = a / b

if b / a > result:
    result = b / a

if a ** b > result:
    result = a ** b

if b ** a > result:
    result = b ** a

print(f"{result:.6f}")

마지막 print문은 아래로도 사용 가능.

print(f"{result:.6f}")        # f-string
print("%.6f" % result)        # % 방식
print("{:.6f}".format(result)) # format 방식

 

print(round(result, 6)) => result를 소수점 6자리까지 반올림이지만, 무조건 소수점 6자리를 채워주진 않음. 


[문제 풀이 2 - max 사용]

두 수를 실수로 입력받는다. a,b

가능한 계산 결과를 리스트에 모두 넣는다.

max()를 이용해서 가장 큰 값을 찾는다.

:.6f를 사용해서 소수점 6자리까지 출력한다.

 

[사용된 개념 설명]

** : 제곱. a**b = a의 b제곱

max() : 가장 큰 값 찾기

:.6f : 소수점 아래 6자리까지 출력

a, b = map(float, input().split())

result = [
    a + b,
    a - b,
    b - a,
    a * b,
    a / b,
    b / a,
    a ** b,
    b ** a
]

print(f"{max(result):.6f}")

 


초보자 기준 C/C++로 푸는게 더 쉬울 것 같다.

댓글