반지와 막대

2532 단어 leetcodetheabbiedsa
n 고리가 있으며 각 고리는 빨간색, 녹색 또는 파란색입니다. 링은 0에서 9까지 레이블이 지정된 10개의 막대에 걸쳐 분포됩니다.

로드에 배치된 링rings을 설명하는 길이2n의 문자열n이 제공됩니다. rings의 두 문자마다 각 링을 설명하는 데 사용되는 색상-위치 쌍을 형성합니다.
  • ith 쌍의 첫 번째 문자는 ith 링의 색상을 나타냅니다( 'R' , 'G' , 'B' ).
  • ith 쌍의 두 번째 문자는 ith 링이 있는 막대를 나타냅니다( '0' ~ '9' ).

  • 예를 들어, "R3G2B1"n == 3 고리를 나타냅니다. 빨간색 고리는 3으로 표시된 막대에, 녹색 고리는 2로 표시된 막대에, 파란색 고리는 1로 표시된 막대에 배치됩니다.

    세 가지 색상의 고리가 모두 있는 막대의 수를 반환합니다.

    예 1:



    입력: 링 = "B0B6G0R6R0R6G9"
    출력: 1
    설명:
  • 0으로 레이블이 지정된 로드에는 빨강, 녹색 및 파랑의 모든 색상이 있는 3개의 링이 있습니다.
  • 6이라고 표시된 막대에는 3개의 링이 있지만 빨간색과 파란색만 있습니다.
  • 9라고 표시된 로드에는 녹색 링만 있습니다.
    따라서 세 가지 색상이 모두 포함된 막대의 수는 1입니다.

  • 예 2:



    입력: 링 = "B0R0G0R9R0B0G0"
    출력: 1
    설명:
  • 0으로 레이블이 지정된 로드에는 빨강, 녹색 및 파랑의 모든 색상이 있는 6개의 링이 있습니다.
  • 9라고 표시된 로드에는 빨간색 링만 있습니다.
    따라서 세 가지 색상이 모두 포함된 막대의 수는 1입니다.

  • 예 3:

    입력: 링 = "G4"
    출력: 0
    설명:
    반지는 1개만 줍니다. 따라서 세 가지 색상이 모두 있는 막대는 없습니다.

    제약:
  • rings.length == 2 * n
  • 1 <= n <= 100
  • rings[i] 여기서 i'R' , 'G' 또는 'B' (인덱스 0)입니다.
  • rings[i] 여기서 i가 홀수인 것은 '0'에서 '9'까지의 숫자입니다(인덱스 0).

  • 해결책:

    class Solution:
        def countPoints(self, rings: str) -> int:
            n = len(rings)
            rods = [set(), set(), set()]
            for i in range(0, n, 2):
                if rings[i] == 'R':
                    rods[0].add(int(rings[i + 1]))
                if rings[i] == 'G':
                    rods[1].add(int(rings[i + 1]))
                if rings[i] == 'B':
                    rods[2].add(int(rings[i + 1]))
            return len(set.intersection(*rods))
    

    좋은 웹페이지 즐겨찾기