일상 코딩
[python] 백준 16675번 두 개의 손, 모듈러 연산 풀이 본문
728x90
https://www.acmicpc.net/problem/16675
ML, MR, TL, TR = map(lambda x:"SPR".find(x), input().split())
def lose_case(x):
return (x+2)%3
if ML == MR and lose_case(ML) in [TL,TR]:
print("TK")
elif TL == TR and lose_case(TL) in [ML,MR]:
print("MS")
else:
print("?")
입력예시 1
R S P R
출력예시1
?
입력예시 2
R R S S
출력예시2
MS
입력예시 3
P P S R
출력예시3
TK
"SPR"
string 타입으로 SPR을 만들고, 입력이 들어오면 index(), find() 함수로 index를 반환 받는다.
"SPR".index()
"SPR".find()
여기서 상대방이 지는 패를 모듈러 연산으로 알아낸 후 이 값이 내가 가진 패에 있는지 판단하면 끝나는 간단한 문제이다.
나의 패 | 연산 | 내가 지는 패 | ||
Scissor(가위) | 0 (index) | (0 + 2) % 3 | 2 | Rock(바위) |
Paper(보) | 1 | (1 + 2) % 3 | 0 | Scissor(가위) |
Rock(바위) | 2 | (2 + 2) % 3 | 1 | Paper(보) |
def lose_case(x):
return (x+2)%3
if ML == MR and lose_case(ML) in [TL,TR]:
print("TK")
위 코드를 해석하면,
상대면, MS의 양손이 같은 패일때,
이를 lose_case() 함수에 넣어서 지는 패가 상대방 리스트(상대방패)에 있을 경우,
승자는 TK가 된다는 의미이다.
728x90
'코딩테스트 > 백준 online Judge' 카테고리의 다른 글
[python] 백준 알고리즘 1874번 스택 수열 풀이 (0) | 2021.11.05 |
---|---|
[python] 백준 알고리즘 17413번 단어 뒤집기 2, 구현 문자열 합치기 (0) | 2021.10.17 |
[python] 백준 온라인 알고리즘 2484번 주사위 네개 풀이 (0) | 2021.10.14 |
[python] 17406번 배열 돌리기 4 백준 온라인 알고리즘 풀이 (0) | 2021.10.12 |
[python] 백준 온라인 알고리즘 1074번 Z, dfs 풀이 (0) | 2021.10.10 |