👀 문제
https://programmers.co.kr/learn/courses/30/lessons/12926
👊 도전
1. 설계
- charAt()으로 문자를 하나씩 추출한 후, n만큼 밀었을때 알파벳 범위를 넘어가면 아스키코드를 이용해 알파벳이 순회할 수 있게 한다.
2. 구현 (성공 코드)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
*
* @author HEESOO
*
*/
class Solution {
public String solution(String s, int n) {
String answer = "";
char alpha;
for(int i=0;i<s.length();i++){
alpha=s.charAt(i);
if(alpha==' ') answer+=" ";
else if('A'<=alpha&&alpha<='Z'){
if(alpha+n>'Z'){
answer+=(char)(alpha+n-26);
}
else{
answer+=(char)(alpha+n);
}
}
else{
if(alpha+n>'z'){
answer+=(char)(alpha+n-26);
}
else{
answer+=(char)(alpha+n);
}
}
}
return answer;
}
}
3. 결과
🤟 성공 🤟
4. 설명
- 아스키코드를 이용한다.
- charAt()으로 문자를 추출한 후, n만큼 밀었을 때 소문자 또는 대문자 범위를 벗어난다면 -26하여 다시 알파벳 범위에 들어오게 한다.
👏 해결 완료!
문제에서 n은 25이하인 자연수라 하였기 때문에 -26해도 상관없었지만, 왠만하면 %26하는 게 좋을 것 같다. n이 26이상 큰 수라면 -26으로는 알파벳 범위에 들어오지 못할 수도 있기 때문이다.