문제설명
문제풀이
이번 문제의 핵심은 문장이 주어졌을때, 해당 문장의 중복되는 글자가 있는지 체크하고,
중복되는 글자가 몇 칸 앞에 있는지 파악하는것이 핵심인 문제였다.
따라서 중복되는 글자가 있는지 확인하는 bool 값 isHas를 이용해, 중복되는 값이 있다면
List answer에 count를 추가하고, 중복되는 값이 없다면 -1을 추가하도록 구현하여 문제를 해결하였다.
using System;
using System.Collections.Generic;
public class Solution
{
public int[] solution(string s)
{
List<int> answer = new List<int>();
for (int i = 0; i < s.Length; i++)
{
//중복되는 글자가 몇 칸 앞에 있는지
int count = 0;
// 중복되는 글자가 존재하는지
bool isHas = false;
for (int j = i - 1; j >= 0; j--)
{
count++;
//똑같은 문자가 존재함
if (s[i] == s[j])
{
isHas = true;
answer.Add(count);
break;
}
}
//똑같은 문자가 없다면
if (!isHas)
{
answer.Add(-1);
}
}
return answer.ToArray();
}
}
다른풀이
딕셔너리와 ContiansKey를 활용하면 for문을 2중으로 돌리지않아서,
시간 복잡도 측면에서 더 효율적으로 문제를 해결해볼 수 있었다.
'알고리즘' 카테고리의 다른 글
JadenCase 문자열 만들기 (0) | 2024.10.24 |
---|---|
C# 최솟값 만들기 (0) | 2024.10.24 |
프로그래머스 C# 두 개 뽑아서 더하기 (0) | 2024.07.25 |
프로그래머스 C# 문자열 내 마음대로 정렬하 (0) | 2024.06.27 |
프로그래머스 C# 숫자 문자열과 영단어 (0) | 2024.06.27 |