본문 바로가기
CodeSignal

longestDigitsPrefix

by Doromi 2023. 12. 30.
728x90
반응형

문자열에서 숫자만으로 이루어진 가장 긴 접두사를 찾는 문제입니다. 

 

주어진 문자열에서 처음부터 숫자가 나오기 시작하면서 숫자로만 이루어진 부분을 찾으면 됩니다.
string solution(string inputString) {
    List<char> list = new List<char>();
    foreach(char c in inputString){
        if(c<65 && c != '(' && c != ')' && c != ' '){
            list.Add(c);
        }
        else{
            break;
        }
    }
    return new String(list.ToArray());
}
List<char> list: 문자열에서 찾은 숫자를 저장할 리스트입니다.
foreach (char c in inputString): 입력 문자열을 순회합니다.
if (c < 65 && c != '(' && c != ')' && c != ' '): 현재 문자 c가 알파벳 대문자 이하의 ASCII 코드에 속하면서 괄호나 공백이 아닌 경우를 확인합니다. 이 조건이 만족하면 숫자로 간주하고 리스트에 추가합니다.
else: 만약 조건을 만족하지 않으면 숫자 이외의 문자가 나온 것이므로 순회를 중단합니다.
return new String(list.ToArray()): 리스트에 저장된 문자들을 배열로 변환하고, 이를 문자열로 만들어 반환합니다.

string solution(string inputString)
    {
        int length = inputString.Length;
        int prefixEndIndex = 0;

        // 문자열을 처음부터 순회하면서 숫자인 부분 찾기
        for (int i = 0; i < length; i++)
        {
            char currentChar = inputString[i];

            // 현재 문자가 숫자인 경우
            if (char.IsDigit(currentChar))
            {
                // prefixEndIndex를 현재 인덱스로 갱신
                prefixEndIndex = i;
            }
            else
            {
                // 숫자가 아닌 문자가 나오면 순회 종료
                break;
            }
        }

        // 찾은 숫자로만 이루어진 부분 반환
        return inputString.Substring(0, prefixEndIndex + 1);
    }
문자열을 처음부터 순회하면서 숫자가 나오면 prefixEndIndex를 갱신하고, 만약 숫자가 아닌 문자가 나오면 순회를 종료합니다. 최종적으로 Substring을 사용하여 찾은 숫자로만 이루어진 부분을 반환합니다.

 

728x90
반응형

'CodeSignal' 카테고리의 다른 글

Bishop and Pawn  (0) 2023.12.30
digitDegree  (0) 2023.12.30
arrayMaxConsecutiveSum  (1) 2023.12.24
growingPlant  (0) 2023.12.24
differentSymbolsNaive  (1) 2023.12.22