2023.03.21(간단한 알고리즘 문제풀어보기)

Vinyl Stage·2023년 3월 22일
0

개발일지

목록 보기
13/42

아직 초반이라 주로 쉬운문제가 대부분이지만 뭔가 흥미가 있었던 문제를 주로 다뤄보자

조건문 문제인데

백준 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의 중요성을 느끼게 되었다.
없으니 계속 오류가 나더라.

profile
Life is Art

0개의 댓글