문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
링 n개가 있고 각 링은 빨강, 초록, 파랑 중 하나이다. 링은 0부터 9까지 라벨이 붙은 10개의 막대에 분산되어 있다.
길이가 2n인 문자열 rings주어지고 막대에 링 n개가 분산된다. rings에 있는 문자 2개는 색-위치로 형성된다.
예를 들어, "R3G2B1"은 n == 3인 링을 나타낸다. 빨강 링은 라벨 3 막대에 위치하고, 초록 링은 라벨 2 막대에 위치하고, 파랑 링은 라벨 1 막대에 위치한다.
3가지 색상의 고리가 모두 끼워져 있는 막대의 갯수를 반환해라.
#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
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;
}
}