글
프로그래머스 레벨1 C# 가장 가까운 같은 글자(Dictionary, var, containskey) - 이해
/// var 암묵적 타입 변수. 아직 어떤 형태의 변수를 정의할 지 안 정해져 있을 때 사용한다고 알고 있다.
using System;
using System.Collections.Generic;
public class Solution
{
public int[] solution(string s)
{
var result = new int[s.Length];
var strDic = new Dictionary<char, int>();
// i번째 글자가 딕셔너리에 포함되어 있지 않으면 넣어준다.
for(int i = 0; i<s.Length; i++)
{
if(strDic.ContainsKey(s[i]) == false) // dictionary에 s[i]문자가 포함되어 있지 않으면
{
result[i] = -1; //결과를 1로 한다.
strDic[s[i]] = i; // 몇 단계 앞에 이 문자랑 같은 게 있는 지 확인하고 길이 만큼을 빼줘야 해서 미리 정의해 둔다.
}
else
{
result[i] = i - strDic[s[i]]; // 거리 만큼을 빼서 배열 result에 대입한다.
strDic[s[i]] = i; // 마찬가지로 길이를 기록하기 위해서 이렇게 한다.
}
// 딕셔너리에 있으면 i에서 딕셔너리에 있는 문자와 그 옆에 있는 i(인덱스)를 뺀다.
// 그리고 딕셔너리에 i(인덱스)와 문자를 삽입
}
return result;
}
}
///////////
using System;
public class Solution {
public int[] solution(string s) {
int[] answer = new int[s.Length];
for(int i = 0; i < s.Length; ++i)
{
int shortestPosition = -1;
for(int j = i - 1; j >= 0; --j)
{
if(s[j] == s[i])
{
shortestPosition = i - j;
break;
}
}
answer[i] = shortestPosition;
}
return answer;
}
}
////// 이해는 가는데 이렇게 또 하라고 하면 못할 거 같다.
'프로그래밍' 카테고리의 다른 글
Hello Coding 심화문제 4-2 (0) | 2022.12.25 |
---|---|
숫자 야구 (0) | 2022.12.25 |
프로그래머스 C# 피자 나누어 먹기(3) (while문, if문, P, J) (0) | 2022.12.20 |
프로그래머스 C# 배열 뒤집기(for문 역순으로 출력, Reverse, Linq / ToArray, P, J) (0) | 2022.12.20 |
프로그래머스 C# 머쓱이보다 키 큰 사람(array 숫자 비교하기, P, J) (0) | 2022.12.20 |