황소와 소
비밀 번호를 적고 친구에게 그 번호가 무엇인지 맞춰보라고 합니다. 친구가 추측을 하면 다음 정보와 함께 힌트를 제공합니다.
비밀 번호
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.)