Notice
Recent Posts
Recent Comments
Link
Welcome! Everything is fine.
[프로그래머스/Lv.1] 시저 암호 - Java 본문
728x90
📌 문제
📌 풀이
이번 문제는 문자열 s를 한글자씩 돌면서 각 알파벳을 n만큼 미는 문제이다. 아스키코드를 이용하여 풀었다.
문자열을 돌면서 char 변수 result에 s.charAt(i) + n을 먼저 저장한 후, 소문자와 대문자를 나눠서 조건문을 작성하였다. 처음에는 소문자와 대문자를 구분하지 않아서 틀렸다. 문자열 연산이 많을 수 있으므로 StringBuilder로 result를 붙여나가도록 했다.
- s.charAt(i)가 소문자일 경우
- 알파벳 소문자는 아스키코드 97 ~ 122인 경우이다. Character.isLowerCase(s.charAt(i))로 처리해도 된다.
- z(122)가 넘어갈 경우, result에서 26(122-96)을 뺀다.
- s.charAt(i)가 대문자일 경우
- 알파벳 대문자는 아스키코드 65 ~ 90인 경우이다. Character.isUpperCase(s.charAt(i))로 처리해도 된다.
- Z(90)이 넘어갈 경우, result에서 26(90-64)을 뺀다.
- s.charAt(i)가 공백일 경우
- StringBuilder에 공백을 붙인 뒤 다음 문자열로 넘어간다.
📌 아스키코드표
📌 전체 코드
class Solution {
public String solution(String s, int n) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char result = (char) (s.charAt(i) + n);
if (s.charAt(i) >= 97 && s.charAt(i) <= 122) {
if (s.charAt(i) + n > 122) result -= 26;
} else if (s.charAt(i) >= 65 && s.charAt(i) <= 90) {
if (s.charAt(i) + n > 90) result -= 26;
} else if (s.charAt(i) == ' ') {
sb.append(' ');
continue;
}
sb.append(result);
}
return sb.toString();
}
}
'프로그래머스 > Lv.1' 카테고리의 다른 글
[프로그래머스/Lv.1] 가장 가까운 같은 글자 - Java (0) | 2024.04.11 |
---|---|
[프로그래머스/Lv.1] 공원 산책 - Java (0) | 2024.04.11 |
[프로그래머스/Lv.1] 신고 결과 받기(2022 KAKAO BLIND RECRUITMENT) - Java (0) | 2024.04.09 |
[프로그래머스/Lv.1] 같은 숫자는 싫어 - Java (0) | 2024.04.08 |
[프로그래머스/Lv.1] 가장 많이 받은 선물(2024 KAKAO WINTER INTERNSHIP) - Java (0) | 2024.04.08 |