1330: 두 수 비교하기
# 1330:두 수 비교하기
A, B = map(int, input().split())
if A > B :
print('>')
if A < B :
print('<')
if A == B :
print('==')
## 다른풀이
a,b=map(int,input().split())
print(("<>"[a>b],"==")[a==b])
다른 풀이가 너무 이해가 안가서 쪼개서 접근해봤어요.
a와 b가 같을 때, ( x, y )[0] 는 x를 출력하겠고, ( x, y )[1] 는 y를 출력하게 되겠네요. 접근하는 아이디어가 신기해요 ㅋㅋ
("<>"[a>b],"==")[a==b] 로 볼 때 튜플 인덱싱으로 접근
"<>"[a>b] 로 볼 때는 문자열 인덱싱으로, [ ] 안에 bool을 넣어줌으로써 ifelse느낌으로 구성했네요.
9498: 시험 성적
# 9498: 시험 성적
score = int(input())
if score >= 90 :
print('A')
elif score >= 80 :
print('B')
elif score >= 70 :
print('C')
elif score >= 60 :
print('D')
else :
print('F')
## 다른풀이
print("FFFFFFDCBAA"[int(input())//10])
## 다른풀이
print({10:'A',9:'A',8:'B',7:'C',6:'D'}.get(int(input())//10, 'F'))
## 다른풀이
a = int(input())
print('F' if a<60 else('D' if a<70 else('C' if a<80 else('B' if a<90 else('A')))))
`시험 성적` 문제에서 첫번째 다른풀이 아이디어가 되게 신선해서 가져와봤어요.
[ ] 을 이용해서 문자열 인덱싱한건데 어떻게 이런 생각을 하는지 신기하네요.
마지막 다른 풀이는 엑셀 =if, R에서 ifelse랑 비슷하게 생겨서 가져와봤습니다.
2753: 윤년
# 2753: 윤년
year = int(input())
if (year % 4 == 0 and year % 100 != 0) or (year % 4 == 0 and year % 400 == 0) :
print(1)
else :
print(0)
# 예시와 문제에서 주어진 논리를 반복하여 읽고 이해하도록 노력해보자.
## 다른 풀이
y=int(input())
print(+((y%100or y//100)%4<1))
## 다른 풀이
a = int(input())
print(int((a%4==0)and(a%100!=0)or(a%400==0)))
## 다른 풀이
y=int(input())
print(1 if y%4==0 and(y%100!=0 or y%400==0)else 0) # 내가 이해했던 논리를 잘 표현하는 코드
- 주어진 문제에서 조건과 논리를 충분히 이해하도록 반복해서 문제 읽기
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
4의 배수 & ( not 100의 배수 or 400의 배수)
14681: 사분면 고르기
# 14681: 사분면 고르기
x = int(input())
y = int(input())
if x > 0 and y > 0 :
print(1)
elif x < 0 and y > 0 :
print(2)
elif x > 0 and y < 0 :
print(4)
else :
print(3)
## 다른 풀이
print("3421"[input()>"0"::2][input()>"0"])
이 문제 또한 숫자지만, 문자열 인덱싱으로 접근해서 풀었습니다.
:: 은 슬라이싱 생각하시면 됩니다.
예시)
array = [1,2,3]
array[::2] # 2칸 간격으로 처음부터 출력하라.
-> [1, 3]
``인덱싱과 슬라이싱, bool을 활용해서 적절하게 if문을 구성할 수 있다.`` 는 사실을 배웠습니다.
2884: 알람 시계
# 2884: 알람 시계
H, M = map(int, input().split())
if M >= 45 :
print(H, M-45)
else :
print(H-1, 60+(M-45))
## 0에 대한 접근
H, M = map(int, input().split())
if H-1 >= 0 :
if M >= 45 :
print(H, M-45)
else :
print(H-1, 60+(M-45))
else :
if M >= 45 :
print(H, M-45)
else :
print(23, 60+(M-45))
# 0에서 23으로 가는 케이스에 대한걸 매끄럽게 짜고 싶은데 if 문을 하나 더 넣었음
# 더 좋은 방법은 없는건지?
## 다른 풀이
h, m = map(int, input().split())
if m-45<0:
h-=1
print(h%24, (m-45)%60)
## 다른 풀이
h, m = map(int, input().split())
if m < 45:
m = m + 60
h = h - 1
print(h%24, m-45)
-1 % 24 의 결과는 23입니다. 이 아이디어 생각하시면 정답의 이해가 빠르실거라 생각합니다.
24시에서 분 단위를 빼면 23시로 넘어갑니다. <=> (-1 % 24 == 23) # -1을 24로 나눈 나머지는 23이다.
'매일매일 (Everyday)' 카테고리의 다른 글
[BOJ] - while문 - Python (0) | 2021.11.25 |
---|---|
[BOJ] - for문 - Python (0) | 2021.11.24 |
[BOJ] - 입출력과 사칙연산 - Python (0) | 2021.11.22 |
[알고리즘] - 동적계획법 (Dynamic programming) (0) | 2021.10.20 |
[알고리즘] - 그리디 알고리즘 (Greedy Algorithm) (0) | 2021.09.01 |