황소와 소
비밀 번호를 적고 친구에게 그 번호가 무엇인지 맞춰보라고 합니다. 친구가 추측을 하면 다음 정보와 함께 힌트를 제공합니다.
비밀 번호
secret
와 친구의 추측guess
이 주어지면 친구의 추측에 대한 힌트를 반환합니다.힌트는
"xAyB"
형식이어야 합니다. 여기서 x
는 황소의 수이고 y
는 소의 수입니다. secret
및 guess
모두 중복된 숫자를 포함할 수 있습니다.예 1:
입력: 비밀 = "1807", 추측 = "7810"
출력: "1A3B"
설명: 황소는 '|'로 연결됩니다. 소에는 밑줄이 그어져 있습니다.
"1807"
|
"7810"
예 2:
입력: 비밀 = "1123", 추측 = "0111"
출력: "1A1B"
설명: 황소는 '|'로 연결됩니다. 소에는 밑줄이 그어져 있습니다.
"1123""1123"
| 또는 |
"0111""0111"
황소가 아닌 숫자는 하나의 1이 황소가 되도록 재배열할 수 있기 때문에 일치하지 않는 두 개의 1 중 하나만 소로 계산됩니다.
제약:
1 <= secret.length, guess.length <= 1000
secret.length == guess.length
secret
및 guess
는 숫자로만 구성됩니다. 해결책:
class Solution:
def getHint(self, secret: str, guess: str) -> str:
n = len(secret)
unused = {}
bulls = 0
cows = 0
for i in range(n):
if secret[i] == guess[i]:
bulls += 1
else:
unused[secret[i]] = unused.get(secret[i], 0) + 1
for i in range(n):
if secret[i] != guess[i]:
if guess[i] in unused:
cows += 1
unused[guess[i]] -= 1
if unused[guess[i]] == 0:
del unused[guess[i]]
return "{}A{}B".format(bulls, cows)
Reference
이 문제에 관하여(황소와 소), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/bulls-and-cows-1838텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)