파란색 : 풀면서 어려웠던 부분 or 고려해야 될 부분
빨간색 : 해결방법
초록색 : 느낀 점
문제
k값만큼 알파벳 순서인 뒤로 이동.
1. 대소문자 구별
2. 알파벳 외에 다른 문자는 변경하지 않는다.
3.'z' , 'Z'를 넘어가면 다시 'a', 'A' 순서로
풀이 : 내가 작성한 코드
public static string caesarCipher(string s, int k)
{
string strAnswer = string.Empty;
for (int i = 0; i < s.Length; i++)
{
if (s[i] >= 'a' && s[i] <= 'z' )
{
int a = s[i] - (97 - k);
strAnswer += ((char)((a % 26) + 97));
}
else if(s[i] >= 'A' && s[i] <= 'Z')
{
int a = s[i] - (65 - k);
strAnswer += ((char)((a % 26) + 65));
}
else
{
strAnswer += s[i];
}
}
return strAnswer;
}
고려할 부분은 대소문자 체크와 그 외 문자 체크 정도였다. z이면 다시 a로 이동하도록 하는 부분을 어떻게 할지는 고민했었다. 알파벳 개수인 26을 % 연산을 통해서 체크했다.
알고리즘 문제는 풀면 풀수록 자주 등장하거나 디테일한 값을 구하는 패턴이 있는 거 같다. 많이 풀어봐야겠다.
반응형
'알고리즘자료구조 > 알고리즘문제' 카테고리의 다른 글
[백준] 알파벳 개수 10808 (0) | 2021.10.18 |
---|---|
[프로그래머스] [큐] 프린터 (0) | 2021.10.03 |
프로그래머스_C#)최대공약수와 최소공배수 (0) | 2019.09.12 |
프로그래머스_C#)제일 작은 수 제거하기 (0) | 2019.09.10 |
프로그래머스_C#)정수 제곱근 판별 (0) | 2019.09.10 |