[PythonBasic] elif를 이용한 문제 (숙련 답안과 비교)

Alex of the year 2020 & 2021·2020년 6월 24일
0

Python

목록 보기
3/18
post-thumbnail

Assignment

좌우와 상하가 모두 1 부터 8까지의 칸으로 이루어져 구성 되어 있는 체스보드가 있습니다.
주어진 input 값 2개를 통해서 해당 칸의 색깔이 검은색이면 "YES"를, 아니면 "NO" 를 출력하세요.

Input 값은 임의로 2개가 주어집니다. 첫번째 input은 X 축이며 두번째 input은 Y 축입니다.

예를 들어, input 값이 2와 6 이면 검은색 box 입니다.

문제 분석

  1. 보아하니 (홀, 홀) or (짝, 짝) 일 때 검정색 칸에 위치하는 것 같다.
  2. 홀수와 짝수를 구분하기 위해 가장 좋은 연산자는 두 수의 나머지 값을 보여주는 %(modulo)

하고 나름대로 내가 짜본 식은 아래와 같다

x = int(input())
y = int(input())

if x%2 ==0 :
  if y%2 ==0:
    print ("YES")
  else:
    print("NO")
else:
  if y%2==0:
    print ("NO")
  else:
    print ("YES")

이 식을 짜고나서 참 뿌듯했다
숙련 답안을 보기 전까지.

아래는 숙련 답안이다.

x = int(input())
y = int(input())

if (x + y) % 2 == 0:
  print('YES')
else:
  print('NO')

MBTI 16가지 성격 유형 중 "ESTJ"에 해당하는 내게,
"훌륭한 질서는 모든 것의 기초이다."라며 효율성과 깔끔한 질서를 중시하는 ESTJ인 내게,
반토막만으로도 충분히 값이 구현되는 코드를 보니 그렇게 아쉬울 수가 없었다

자 그럼 스스로 코드리뷰를 해보자

  1. 내가 작성한 코드가 틀린 것은 아니다.
  2. 다만, 체스판의 좌표를 (x, y)라고 x축 따로, y축 따로로 나누어 생각할 필요가 있었나라는 의문은 든다.
  3. 처음 문제 분석 때 알아냈듯, (홀, 홀) 이고 (짝, 짝)이 유의미한 값이라면 사실 (홀+홀)과 (짝+짝)이 모두 짝수가 된다는 사실을 한 번쯤 생각할 수 있었다.
  4. 두 수의 합으로 진행할 경우, 코드는 당연히 반토막날 수 있다.

알고리즘 스터디를 해야겠다는 교훈을 얻을 수 있는 좋은 문제였다

그럼 이만

profile
Backend 개발 학습 아카이빙 블로그입니다. (현재는 작성하지 않습니다.)

1개의 댓글

comment-user-thumbnail
2020년 6월 24일

쇠자가 인상적이네요~ 포스팅 잘 봤습니다

답글 달기