좌우와 상하가 모두 1 부터 8까지의 칸으로 이루어져 구성 되어 있는 체스보드가 있습니다.
주어진 input 값 2개를 통해서 해당 칸의 색깔이 검은색이면 "YES"를, 아니면 "NO" 를 출력하세요.
Input 값은 임의로 2개가 주어집니다. 첫번째 input은 X 축이며 두번째 input은 Y 축입니다.
예를 들어, input 값이 2와 6 이면 검은색 box 입니다.
- 보아하니 (홀, 홀) or (짝, 짝) 일 때 검정색 칸에 위치하는 것 같다.
- 홀수와 짝수를 구분하기 위해 가장 좋은 연산자는 두 수의 나머지 값을 보여주는 %(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인 내게,
반토막만으로도 충분히 값이 구현되는 코드를 보니 그렇게 아쉬울 수가 없었다
자 그럼 스스로 코드리뷰를 해보자
- 내가 작성한 코드가 틀린 것은 아니다.
- 다만, 체스판의 좌표를 (x, y)라고 x축 따로, y축 따로로 나누어 생각할 필요가 있었나라는 의문은 든다.
- 처음 문제 분석 때 알아냈듯, (홀, 홀) 이고 (짝, 짝)이 유의미한 값이라면 사실 (홀+홀)과 (짝+짝)이 모두 짝수가 된다는 사실을 한 번쯤 생각할 수 있었다.
- 두 수의 합으로 진행할 경우, 코드는 당연히 반토막날 수 있다.
알고리즘 스터디를 해야겠다는 교훈을 얻을 수 있는 좋은 문제였다
그럼 이만
쇠자가 인상적이네요~ 포스팅 잘 봤습니다