문제 풀기/C#

50. 가장 가까운 글자

kagan-draca 2025. 2. 4. 15:38

 

기본틀 :

 

using System;

public class Solution {
    public int[] solution(string s) {
        int[] answer = new int[] {};
        return answer;
    }
}

 

문제를 보고 매개변수 s의 첫 번째 문자는 무조건 -1이라는 점을 확인할 수 있다.

 

그래서 반복문의 시작을 두 번째 문자부터 시작해서 마지막 문자까지 반복하면 된다.

 

반복문을 수행하면서 내가 찾고자 하는 문자 이전 문자열을 추출해야 하기 때문에

 

s.Substring(0, i)로 이전 문자열을 추출하고

 

LastIndexOf()를 사용해 이전 문자열에서

 

찾고자 하는 문자의 index를 찾는다.

 

1) 찾고자 하는 문자의 index가 없으면 index는 -1이 된다.

 

2) 찾고자 하는 문자가 이전 문자열에 존재할 경우 

    우리는 몇 칸 떨어져 있는지 알고 싶기 때문에

    현재 반복 횟수 - index로 원하는 값을 얻을 수 있다.

 

using System;
using System.Linq;

public class Solution 
{
    public int[] solution(string s) 
    {
        int[] result = new int[s.Length];
        
        result[0] = -1;
        
        for(int i = 1; i < s.Length; i++)
        {
            int index = s.Substring(0, i).LastIndexOf(s[i]);
            result[i] = index == -1 ? -1 : i - index;
        }
        return result;
    }
}