황소와 소

1858 단어 theabbieleetcodedsa
친구와 Bulls and Cows 게임을 하고 있습니다.

비밀 번호를 적고 친구에게 그 번호가 무엇인지 맞춰보라고 합니다. 친구가 추측을 하면 다음 정보와 함께 힌트를 제공합니다.
  • 올바른 위치에 있는 추측의 숫자인 "황소"의 수입니다.
  • 암호 번호에 있지만 잘못된 위치에 있는 추측의 숫자인 "cows"의 수입니다. 특히 추측에서 황소가 아닌 숫자는 황소가 되도록 재배열할 수 있습니다.

  • 비밀 번호secret와 친구의 추측guess이 주어지면 친구의 추측에 대한 힌트를 반환합니다.

    힌트는 "xAyB" 형식이어야 합니다. 여기서 x는 황소의 수이고 y는 소의 수입니다. secretguess 모두 중복된 숫자를 포함할 수 있습니다.

    예 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
  • secretguess는 숫자로만 구성됩니다.

  • 해결책:

    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)
    

    좋은 웹페이지 즐겨찾기