[LeetCode] Rings and Rods

아르당·2026년 8월 6일

LeetCode

목록 보기
449/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

링 n개가 있고 각 링은 빨강, 초록, 파랑 중 하나이다. 링은 0부터 9까지 라벨이 붙은 10개의 막대에 분산되어 있다.
길이가 2n인 문자열 rings주어지고 막대에 링 n개가 분산된다. rings에 있는 문자 2개는 색-위치로 형성된다.

  • i번째 쌍의 첫 번째 문자는 i번째 링의 색상('R', 'G', 'B')를 나타낸다.
  • i번째 쌍의 두 번째 문자는 i번째 링의 위치('0'에서 '9')인 막대를 나타낸다.

예를 들어, "R3G2B1"은 n == 3인 링을 나타낸다. 빨강 링은 라벨 3 막대에 위치하고, 초록 링은 라벨 2 막대에 위치하고, 파랑 링은 라벨 1 막대에 위치한다.
3가지 색상의 고리가 모두 끼워져 있는 막대의 갯수를 반환해라.

Example

#1

Input: rings = "B0B6G0R6R0R6G9"
Output: 1
Explanation:

  • 라벨 0 막대는 모든 색상 링 빨강, 초록, 파랑 3개가 끼워져 있다.
  • 라벨 6 막대는 링 3개가 끼워져 있지만, 빨강과 파랑 뿐이다.
  • 라벨 9 막대는 초록 링만 끼워져 있다.

따라서 모든 색상을 가진 막대의 갯수는 1이다.

#2

Input: rings = "B0R0G0R9R0B0G0"
Output: 1

#3
Input: rings = "G4"
Output: 0

Constraints

  • rings.length == 2 * n
  • 1 <= n <= 100
  • rings[i]는 i가 짝수면 'R', 'G', 'B' 중 하나이다.
  • rings[i]는 i가 홀수면 '0'에서 '9'까지 숫자이다.

Solved

class Solution {
    public int countPoints(String rings) {
        int r[] = new int[10];
        int g[] = new int[10];
        int b[] = new int[10];
        int n = rings.length();

        for(int i = 0; i < n; i += 2){
            int ring = rings.charAt(i + 1) - '0';

            if(rings.charAt(i) == 'R'){
                r[ring]++;
            }else if(rings.charAt(i) == 'G'){
                g[ring]++;
            }else if(rings.charAt(i) == 'B'){
                b[ring]++;
            }
        }

        int count = 0;

        for(int i = 0; i < 10; i++){
            if(r[i] > 0 && g[i] > 0 && b[i] > 0){
                count++;
            }
        }

        return count;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글