728x90
반응형
[문제 링크]
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제]

📍 [코드]
class Solution {
public String solution(String s, int n) {
String answer = "";
for(char c : s.toCharArray()){
if(c == ' ') answer += ' ';
else if(c >= 'A' && c <= 'Z') {
char shifted = (char)(((c - 'A' + n) % 26) + 'A');
answer += shifted;
}
else if(c >= 'a' && c <= 'z') {
char shifted = (char)(((c - 'a' + n) % 26) + 'a');
answer += shifted;
}
}
return answer;
}
}
💡 접근법
-
toCharArray()를 활용하여 문자로 다루며 - 공백일 땐 공백 그대로 반환하도록
- 대문자일 땐 n만큼 이동한 대문자를 반환하도록
- 소문자일 땐 n만큼 이동한 소문자를 반환하도록 조건 작성
- c의 값이 무엇이든 첫 문자인 'A' 또는 'a'를 빼면 0부터 인덱스를 갖게 된다.
➡️ ex.'A' - 'A' = 0/'C' - 'A' = 2 - 자기의 위치에서 n만큼 더하여 이동 시킨다.
⭐️ % 26 하는 이유 : 인덱스는 0-25까지만 가능
⭐️'Z' - 'A' = 25이므로 나머지를 활용하여 순환하도록 ("Z" + 1 → A" / "Z" + 2 → B" ) - 이후 'A' 또는 'a'를 더하여 문자 코드로 바꾼 후 저장
- c의 값이 무엇이든 첫 문자인 'A' 또는 'a'를 빼면 0부터 인덱스를 갖게 된다.
✅ 유니코드(아스키코드 값) 활용
💬 마무리
아스키코드 값을 통해 형변환하여 이동시키는 것은 쉽고 간편하지만, 인덱스를 어떻게 활용해야 좋을지
많이 생각해봐야 하는 것 같다.
z의 경우 순환하는 부분을 생각하기까지가 오래 걸린 것 같다.
728x90
반응형
'💻코딩 > 💡Programmers' 카테고리의 다른 글
| [프로그래머스|JAVA] 서버 증설 횟수 📈 | 배열 활용 | 쉬운 코드 ⭕️ (0) | 2025.08.25 |
|---|---|
| [프로그래머스|JAVA] K번째 수 | 정렬 | List 활용 📚 (1) | 2025.08.25 |
| [프로그래머스|JAVA] 가운데 글자 가져오기 | 간결 & 쉬운 코드 📚 | 간편하게 String 형변환 방법 포함 ⭕️ (2) | 2025.08.25 |
| [프로그래머스|JAVA] 최댓값과 최솟값 | 🔢 Integer.MAX_VALUE / Integer.parseInt 활용 (1) | 2025.08.25 |
| [프로그래머스|JAVA] 하샤드 수 | 🌐 아스키코드 활용 -> 형변환 (5) | 2025.08.25 |
