![[백준] python 3003번 [백준] python 3003번](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다....
www.acmicpc.net
문제 풀이에 앞서 자축할 점은
2달 전 이해하지 못해 회피했던 이 문제를 풀었다는 거다 ~~^^*(폭죽)(환호)(박수)
처음 python을 공부할 때에는 모든 문제를 한 번에 풀려고 해서 많이 어려웠는데
step by step, line by line으로 문제를 이해하려는 시도를 하다 보니
처음보다는 이해력이 좋아진 게 아닐까 싶다*^^*
알고보면 간단하지만 문제가 길어 진입장벽이 꽤 높고
여러 번의 시행착오를 겪게 한 문제
1차 try.
king, queen, rook, bishop, knight, pawn = map(int, input().split())
if (0 <= king <= 10) and (0 <= queen <= 10) and (0 <= rook <= 10) and (0 <= bishop <= 10) and (0 <= knight <= 10) and (0 <= pawn <= 10):
print((1 - king, 1 - queen, 2 - rook, 2 - bishop, 2 - knight, 8 - pawn))
10430 번을 풀며 알게된 map 을 응용했고,
분명 python으로 실행했을 때는 올바르게 답이 나오는데
백준 채점에서는 "틀렸습니다!!!" 가 나와서 황당.
if문이 굳이 필요없는가 싶어 if문을 빼고 재도전 해봤다.
2차 try.
king, queen, rook, bishop, knight, pawn = map(int, input().split())
print((1 - king, 1 - queen, 2 - rook, 2 - bishop, 2 - knight, 8 - pawn))
틀렸습니다 !!!
print에 값을 하나하나 입력하는 건 좋지 않다는 조언이 떠올라서
각각의 값을 변수에 넣고, print는 변수로만 실행해 보았다.
3차 try.
king, queen, rook, bishop, knight, pawn = map(int, input().split())
a = 1 - king
b = 1 - queen
c = 2 - rook
d = 2 - bishop
e = 2 - knight
f = 8 - pawn
print(a, b, c, d, e, f)
정답 ~
올바른 피스 값에서 입력값을 뺄셈으로 입력해 주었는데,
그 이유는 문제에서 '음수라면 제거해야 하는 것이다'라고 했기 때문이다.
올바른 세트보다 입력값이 더 많다면 제거해야 하기 때문에 +가 아닌 - 를 해 주었다.
if문을 제거해도 괜찮겠다고 판단했던 이유는
아무래도 체스 피스가 엄청나게 많을 리가 없으니까...? (근거 없음)
입력값 범위를 지정하는 경우와 안 해도 되는 경우를 알아봐야겠다. ..
'python > 연습문제 풀이' 카테고리의 다른 글
[백준] python 10807 : 개수 세기 (0) | 2022.10.24 |
---|---|
[백준] python 2884번: 알람 시계 (0) | 2022.10.20 |
[백준] python 10430번 (0) | 2022.10.18 |
(연습문제) 사용자 정의 class (2) | 2022.09.30 |
(연습문제) 사용자정의함수, 반복문 별찍기 (0) | 2022.09.05 |
댓글