본문 바로가기
CodeSignal

palindromeRearranging

by Doromi 2023. 12. 10.
728x90
반응형
주어진 문자열을 재배열하여 팰린드롬을 형성할 수 있는지 확인하는 문제입니다.

예를 들어, "aabb" 문자열은 "abba"로 재배열하여 팰린드롬을 형성할 수 있습니다. 따라서 이 경우에는 함수가 true를 반환해야 합니다.

팰린드롬은 앞으로 읽어도 뒤로 읽어도 동일한 문자열을 말합니다. 문제에서는 문자열을 재배열하여 팰린드롬을 만들 수 있는지를 확인하라고 명시하고 있습니다.

 

bool solution(string inputString) {
    Dictionary<char,int> dic = new Dictionary<char, int>();
    
    foreach(char c in inputString){
        if(dic.ContainsKey(c)){
            dic[c]++;
        }
        else dic[c] = 1;
    }
    
    int oddCount = 0;
    foreach(var entry in dic){
        if(entry.Value % 2 != 0){
            oddCount++;
        }
    }
    
    return oddCount <= 1;
    
}

 

Dictionary<char, int> 타입의 charCount 딕셔너리를 선언합니다. 이 딕셔너리는 각 문자의 등장 횟수를 기록합니다.

문자열을 순회하면서 charCount에 각 문자의 등장 횟수를 업데이트합니다.

문자열 순회가 끝나면 oddCount 변수를 선언하고 0으로 초기화합니다. oddCount는 홀수 횟수를 갖는 문자의 개수를 나타냅니다.

foreach 루프를 통해 charCount의 값들을 확인하면서, 각 문자의 등장 횟수가 홀수인 경우 oddCount를 증가시킵니다.

최종적으로 oddCount가 1 이하이면 문자열을 재배열하여 팰린드롬을 만들 수 있으므로 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

 

728x90
반응형

'CodeSignal' 카테고리의 다른 글

isIPv4Address  (0) 2023.12.10
areEquallyStrong  (1) 2023.12.10
arrayChange  (0) 2023.12.09
Are Similar?  (2) 2023.12.06
Add Border  (0) 2023.12.05