[CodeUp 기초 100제] 6064번 풀이 with 파이썬(python)

Jeony·2021년 9월 11일
0

codeup 기초 100제

목록 보기
64/98
post-thumbnail

문제

3항연산

입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자.
단, 3항 연산을 사용한다.

참고

프로그래밍언어 소스코드 작성시 모든 요소들은
"순서에 따라 한 단계씩 실행"
"미리 정해진 순서에 따라 하나씩 연산 수행"
"그 때까지 연산된 결과를 이용해 다시 순서에 따라 하나씩 연산"
...
등의 원리가 적용된다.

따라서 3항 연산을 중첩해(괄호로 묶는 등..) 이용하면 여러 값들을 순서대로 비교해 가장 큰/작은 값을 계산할 수 있다.

예를 들어
(a if a>b else b) if ((a if a>b else b)>c) else c
와 같은 계산식은 a, b, c 의 값 중 가장 큰 값으로 계산된다.

입력 예시

3 -1 5

출력 예시

-1

답안

모델 답안

a, b, c = input().split()
a = int(a)
b = int(b)
c = int(c)
print((a if a>b else b) if ((a if a>b else b)>c) else c)

내 답안

n1, n2, n3 = input().split()
n1, n2, n3 = int(n1), int(n2), int(n3)
result = (n1 if n1 < n2 else n2) if n1 < n3 else (n3 if n3 < n2 else n2)
print(result)

풀이

내 풀이

내 답안과 모델 답안의 풀이 방식은 같지만 순서의 차이가 있어요.
모델 답안을 보고 모델 답안이 더 좋은 코드인 것 같아서 모델 답안의 풀이를 쓸께요😅

A를 입력할 수 있도록 input()을 쓰고 값을 1(공백)2(공백)3이렇게 받기 위해 split사용.
a, b, c = input().split()
input()으로 받은 값은 문자열이기 때문에 산술하기 위해 정수형으로 바꾸고 다시 넣어준다.
a = int(a)
b = int(b)
c = int(c)
우리의 목적은 입력받은 3개 값을 서로 비교해주어야 한다.
첫번 째로 a vs b!
두번 째로 a, b 중 이긴 녀석 vs c!
질문:
어라? a vs b, a vs c, b vs c 이렇게 골고루 비교해줘야 하는거 아닌가요?
답변:
지금은 가장 작은 수만을 선별하는 작업이므로 그럴 필요 x
가장 작은 값, 두번 째로 작은 값, 세번 째로 작은 값 이렇게 구하는 경우에 그렇게 해준다.**
print((a if a>b else b) if ((a if a>b else b)>c) else c)


input(): 프롬프트를 띄워서 사용자의 입력 받을 수 있게 해준다.
(단, 입력 받은 것은 문자열로 저장된다. print(type()))으로 type() 괄호 안에 변수를 넣고 찍으면 정수인지, 문자열인지, 무슨 타입인지 확일 할 수 있다!)

int(): 위의 input()에서 말했듯이 input으로 받은 값은 문자열로 저장된다.
산술을 하기 위해, 문자열을 정수로 변환시켜주는 int()를 써서 변환시켜준다.

a if 조건 else b: 조건이 True일 경우 a, False일 경우 b

print(): 괄호 안의 내용을 출력!

profile
알고리즘으로 문제를 해결하자 (ʘ言ʘ╬)

0개의 댓글