백준

백준 1330 두 수 비교하기 파이썬

하카데미 2022. 2. 9. 08:30

1. 문제

  • 두 수 비교하기 → 대소비교

 

 

2. 출제의도 파악하기

  • if문을 활용하도록!

 

 

3. 풀이

  • 경우1 두 수를 빼고 그 결과를 가지고 대소비교 가능
  • 경우2 두 수 자체를 부등호 이용해 비교 가능

경우1

두 수를 뺐을 때의 결과가 양수이면 앞의 수가 크고,

음수이면 뒤의 수가 크고,

결과가 0이면 두 수의 절대값이 같다는 개념으로 풀었다.

x, y = map(int, input().split())

result = x - y

if result > 0:
    print('>')

elif result < 0:
    print('<')

else:
    print('==')

 

경우2

부등호를 통해 직접 두 수의 대소비교도 가능하므로,

경우1에서 두 수를 뺀 부분을 제거하고 풀 수 있다.

x, y = map(int, input().split())

if x > y :
    print('>')

elif x < y:
    print('<')

else:
    print('==')

 

 

4. 남의 버전 분석

# 숏코딩
x, y = map(int, input().split())
print(['><'[x<y], '=='][x==y])
  • 리스트의 인덱스를 활용해 푼 숏코딩

1) 리스트 부분 : ['><'[x<y], '==']

2) 위 리스트의 인덱스 부분 : [x==y]

 

1)-1 리스트 속 문자열 부분 : '><'

1)-2 1)-1의 인덱스 부분 : [x<y]

 

숏코딩 풀이

2) [x==y]

2)의 결과는 0 또는 1을 갖게 된다.

그 이유는 x==y가 True은 1을 의미하고, False일 땐 0을 갖게 된다.

그래서 [x==y]는 [0] 혹은 [1]이 되므로 1)의 인덱스로 쓰일 수 있게 된다.

 

1) ['><'[x<y], '==']

2)에 의해 둘 중에 하나가 선택되게 된다.

만약 2)의 결과가 [0]이 된다면, 1)-1 부분에 접근할 것이다.

그럼 1)-2 부분이 참인지 거짓인지에 따라 '><'의 일부분을 출력하게 된다.

 

  • 문자열은 인덱스를 갖는다.

 

  • 또 다른 남의 버전
# print 안에 if 사용
a, b = map(int, input().split())
print('>' if a > b else ('<' if a < b else '=='))

 

 

 

 

5. 출력 확인

 

'백준' 카테고리의 다른 글

백준 2753 윤년 파이썬  (0) 2022.02.11
백준 9498 시험 성적 파이썬  (0) 2022.02.10
백준 2588 곱셈  (0) 2022.02.08
백준 10430 나머지 파이썬  (0) 2022.02.07
백준 10869 사칙연산 파이썬  (0) 2022.02.06