[kata][python] 윷놀이
- 2 mins윷놀이
출처: 백준 알고리즘 2490번 문제
간단한 문제이다.
공백으로 구분된 네 개의 정수를 받는다.
정수는 0 또는 1만 올 수 있다.
윷의 배를 0, 1을 윷의 등으로 보고, 도/개/걸/윷/모를 판단하면 된다.
도/개/걸/윷/모 는 각각 A/B/C/D/E 로 출력한다.
입력을 총 세 번 들어온다.
입력
0 1 0 1
1 1 1 0
0 0 1 1
출력
B
A
B
내 풀이
1 import sys
2
3 for _ in range(3):
4 sum_front = sum(map(int, sys.stdin.readline().split()))
5 if sum_front == 0:
6 print("D")
7 elif sum_front == 1:
8 print("C")
9 elif sum_front == 2:
10 print("B")
11 elif sum_front == 3:
12 print("A")
13 else:
14 print("E")
평범한 풀이다.
입력이 세 번 들어오므로 for문도 세 번 돌렸다.
들어온 값을 공백기준으로 자른 후, 정수형으로 바꿔 모두 더해주었다.
0만 4개 나온 경우는 윷(D)
0이 3개, 1이 1개 나온 경우는 걸(C)
0이 2개, 1이 2개 나온 경우는 개(B)
0이 1개, 1이 3개 나온 경우는 도(A)
1만 4개 나온 경우는 모(E)
를 출력했다.
다른사람 풀이
1 exec("print('EABCD'[input().count('0')]);" * 3)
0의 갯수에 따라 모/도/개/걸/윷 순으로 나열되는 것을 이용했다.
‘EABCD’라는 스트링을 만들고, 입력받은 숫자에서 0의 갯수를 카운팅해서 해당 인덱스의 문자열을 출력했다.
‘EABCD’[0]은 모
‘EABCD’[1]은 도
‘EABCD’[2]은 개
‘EABCD’[3]은 걸
‘EABCD’[4]은 윷
이 출력될 것이다.
인덱스번호를 잘 보면 문자열에 포함된 0의 갯수이다.
그리고 exec 함수를 이용해 print문을 * 3 해줌으로써 for문을 사용하지 않은점도 특이하다.
분석
유독 피곤해서 오늘은 좀 간단한 문제를 풀었는데,
역시 아무리 간단한 문제를 풀어도 하나씩은 건져가는게 있는 것 같아서 좋은 것 같다.
나는 모든 숫자를 더한 값으로 결과를 판단했다.
즉, 1의 갯수를 기준으로 결과를 판단했다.
다른 사람의 풀이는 이와 반대로 0의 갯수를 count해서 결과를 판단했다.
그리고 그 숫자를 따로 저장했다가 쓰는게 아니라,
바로 문자열의 인덱스로 사용해서 코드를 한층 간결하게 만들었다.
비록 아주 간단한 문제였지만, 약간의 관점 변화가 큰 차이를 가져올 수도 있다는 것을 다시 깨닫게 되었다.