반응형
- 첫 풀이 및 정답풀이
이 문제는 n의 값에 따라 문자열의 각 문자들이 변해야 하기 때문에 아스키코드가 중요하다는 것을 알 수 있다. 모든 아스키코드값을 알 수 없기 때문에 필요할 때마다 찾아보면 된다. A ~ Z의 아스키 코드는아스키코드는 65 ~ 90까지이고, a ~ z의 아스키코드는 97 ~ 122이다. 이를 이용해서 적절한 조건에 따라 처리해주면 된다.
class Solution {
public String solution(String s, int n) {
String answer = "";
// 1. 문자열 탐색
for(int i = 0;i<s.length();i++){
// 2. 공백은 공백처리 후 넘어간다.
if(s.charAt(i) == ' ') {
answer+=" ";
continue;
}
// 3. A ~ Z의 경우 => n만큼 밀린 문자가 Z인 90을 넘을 경우 -26을 통해 A부터 시작, 아니면 그냥 밀린 문자를 추가.
if('A'<=s.charAt(i) && s.charAt(i)<='Z'){
answer+= (s.charAt(i)+n) >90 ? (char)((s.charAt(i)+n) -26) : (char)((s.charAt(i)+n));
}
// 4. a ~ z의 경우 => n만큼 밀린 문자가 z인 122를 넘을 경우 -26을 통해 a부터 시작, 아니면 그냥 밀린 문자를 추가.
else{
answer+= s.charAt(i)+n >122 ? (char)((s.charAt(i)+n) -26) : (char)((s.charAt(i)+n));
}
}
return answer;
}
}
반응형