본문 바로가기
CodeSignal

All Longest Strings

by Doromi 2023. 11. 27.
728x90
반응형
주어진 문자열 배열에서 가장 긴 문자열들을 찾는 문제입니다. 주어진 문자열 배열에서 가장 긴 문자열의 길이를 찾은 다음, 해당 길이와 동일한 길이를 가지는 모든 문자열을 반환해야 합니다.

 

["aba", "aa", "ad", "vcd", "aba"]

 

여기서 가장 긴 문자열의 길이는 3입니다. 따라서 결과로는 길이가 3인 모든 문자열을 포함하는 배열이 반환되어야 합니다. 
결과는 다음과 같습니다:

 

["aba", "vcd", "aba"]

 

 

가장 긴 문자열의 길이를 찾고, 해당 길이와 동일한 길이를 가지는 모든 문자열을 찾아 반환하는 것이 목표

 

string[] solution(string[] inputArray) {
    Dictionary<int,int> dic = new Dictionary<int,int>();
    List<string> ret = new List<string>();
    int max = 0;
    for(int i = 0;i<inputArray.Length;i++){
        dic.Add(i,inputArray[i].Length);
        if(inputArray[i].Length > max){
            max = inputArray[i].Length;
        }
    }
    
    for(int i = 0;i<inputArray.Length;i++){
        if(dic[i] == max){
            ret.Add(inputArray[i]);
        }
    }
    
    return ret.ToArray<string>();
}

 

Dictionary<int, int> dic = new Dictionary<int, int>();: dic은 인덱스와 해당 인덱스에 위치한 문자열의 길이를 저장하는 딕셔너리입니다.

List<string> ret = new List<string>();: ret은 결과로 반환할 가장 긴 문자열들을 저장할 리스트입니다.

int max = 0;: max는 현재까지 발견한 가장 긴 문자열의 길이를 나타내는 변수입니다.

for (int i = 0; i < inputArray.Length; i++) { ... }: 주어진 문자열 배열을 순회합니다.

a. dic.Add(i, inputArray[i].Length);: 딕셔너리에 현재 문자열의 인덱스 i와 해당 문자열의 길이를 저장합니다.

b. if (inputArray[i].Length > max) { max = inputArray[i].Length; }: 현재 문자열의 길이가 max보다 크면 max를 해당 길이로 업데이트합니다.

for (int i = 0; i < inputArray.Length; i++) { ... }: 다시 한 번 주어진 문자열 배열을 순회합니다.

a. if (dic[i] == max) { ret.Add(inputArray[i]); }: 만약 현재 문자열의 길이가 max와 동일하다면, 해당 문자열을 결과 리스트에 추가합니다.

return ret.ToArray<string>();: 결과 리스트를 배열로 변환하여 반환합니다.
728x90
반응형

'CodeSignal' 카테고리의 다른 글

isLucky  (0) 2023.12.01
commonCharacterCount  (0) 2023.11.28
matrixElementsSum  (0) 2023.11.25
Almost Increasing Sequence  (0) 2023.11.25
Make Array Consecutive 2  (0) 2023.11.22