코린이의 소소한 공부노트

[LeetCode/Easy] 821. Shortest Distance to a Character 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 821. Shortest Distance to a Character

무지맘 2022. 12. 8. 10:07

1. Input

1) 문자열 s

2) 문자열 c

3) cs에 나타나는 문자 중 하나다.

 

2. Output

1) s에 있는 각 문자에 대해 가장 가까운 c까지와의 거리를 담은 정수 배열

 

3. Constraint

1) 1 <= s.length==answer.length <= 10^4

2) sc는 영어 소문자로만 구성되어있다.

3) cs에 적어도 하나 있다.

 

4. Example

Input: s = "loveleetcode", c = "e" -> Output: {3,2,1,0,1,0,0,1,2,2,1,0}

Explanation: es에서 3, 5, 6, 11번째에 있다.

- l3번째 e와 가까우므로 abs(0-3) = 3

- o3번째 e와 가까우므로 abs(1-3) = 2

- 4번째에 위치한 l3번째 e5번째 e 사이에 끼어있는데, 어느쪽으로 계산해도 거리는 1이다.

- 이런식으로 쭉 계산하면 Output과 같은 결과를 얻게 된다.

 

5. Code

1) 첫 코드(2022/07/26)

List<Integer> index = new ArrayList();

for(int i=0 ; i<s.length() ; i++)
    if(s.charAt(i)==c)
        index.add(i);

int[] output = new int[s.length()];
for(int i=0 ; i<s.length() ; i++){
    int dif = s.length();
    for(int j=0 ; j<index.size() ; j++)
        if(Math.abs(i-index.get(j))<dif)
            dif = Math.abs(i-index.get(j));
    output[i] = dif;
}

return output;