코린이의 소소한 공부노트

[LeetCode/Easy] 2103. Rings and Rods 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2103. Rings and Rods

무지맘 2023. 1. 12. 09:35

1. Input

1) 문자열 rings

- 링의 색깔과 링의 위치가 순서대로 담긴 길이 2의 문자열이 연속적으로 n개 담겨 있다.

- 첫 번째 문자는 색깔을, 두 번째 문자는 위치를 나타낸다.

 

2. Output

1) 0부터 9까지 레이블링 되어있는 막대기들 중 세 가지 링이 모두 있는 막대기의 번호를 반환

 

3. Constraint

1) rings.length == 2 * n

2) 1 <= n <= 100

3) rings'R', 'G', 'B', 0-9로 이루어져 있다.

 

4. Example

Input: num1=2, num2=3 -> Output: 6

 

5. Code

1) 첫 코드(2022/06/14)

int[] r = new int[10];
int[] g = new int[10];
int[] b = new int[10];
int n = 0;
for(int i=0 ; i<rings.length()/2 ; i++){
    n = rings.charAt(2*i+1)-'0';
    if(rings.charAt(2*i) == 'R' && r[n]==0) r[n]++;
    else if(rings.charAt(2*i) == 'G' && G[n]==0) g[n]++;
    else if(rings.charAt(2*i) == 'B' && B[n]==0) b[n]++;
}

for(int i=0 ; i<10 ; i++)
    r[i] += (g[i] + b[i]);

int count = 0;
for(int i=0 ; i<10 ; i++)
    if(r[i] == 3)
        count++;

return count;

- 빠르지만 메모리를 많이 쓴다.

- 각 위치에 색깔별로 처음 1개만 들어왔을 때를 세려고 위와 같이 코딩을 했는데, 지금으로써는 딱히 더 좋은 코드가 생각이 나지 않는다.