아직 초반이라 주로 쉬운문제가 대부분이지만 뭔가 흥미가 있었던 문제를 주로 다뤄보자
조건문 문제인데
백준 1330번 두 수 비교하기
문제 : 두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.
입력 : 첫째 줄에 A와 B가 주어진다. A와 B는 공백 한 칸으로 구분되어져 있다.
출력 :
첫째 줄에 다음 세 가지 중 하나를 출력한다.
A가 B보다 큰 경우에는 '>'를 출력한다.
A가 B보다 작은 경우에는 '<'를 출력한다.
A와 B가 같은 경우에는 '=='를 출력한다.
간단하게 짜보자면
a, b = map(int, input().split())
if a > b:
print(">")
elif a < b:
print("<")
else:
print("==")
이런식으로 나오는 굉장히 짜기 쉬운코드인데 이걸 짧게 만들어보았다.
a, b = map(int, input().split())
print(">" if a > b else "<" if a < b else "==")
이런식으로 한다면 if조건문은 한줄로 구현했지만 print에 너무 많은 내용을 담은것 같은 느낌이 들었다.
a, b = map(int, input().split())
result = ">" if a > b else "<" if a < b else "=="
print(result)
그래서 result를 하나 더 정의해주고 넣어줬더니 뭔가 더 깔끔해 보이는 느낌이다.
이 문제도 마찬가지이다.
백준 2753번 윤년
문제 :
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.
입력 : 첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
출력 : 첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
a = int(input())
print("1" if a % 4 == 0 and a %
100 > 0 or a % 400 == 0 else "0")
이런식으로 한줄에 다 담을수 있겠지만
a = int(input())
result = "1" if a % 4 == 0 and a % 100 > 0 or a % 400 == 0 else "0"
print(result)
이 두 결과모두 걸린시간은 같고 길이는 10B정도만 차이가 났기때문에 아예 숏코딩을 할게 아니면 오히려 알아보기 쉬운것이 좋지 않을까 싶다.
result로 구분해줌으로써 보기에는 더 깔끔하다
입출력과 사칙연산단계에서는 2문제가 남았지만 그 개와 고양이는 아직 손대지는 못할듯 싶다.(문제보니 어지러움)
아무튼 문제를 풀면서 map()의 사용과 split()의 사용을 계속 해보면서 좀더 알아가게 되었고 int의 중요성을 느끼게 되었다.
없으니 계속 오류가 나더라.