- 내 풀이
class Solution {
public String solution(String s, int n) {
String answer = "";
// 문자열을 숫자로 바꾸기 위한 변수
int change = 0;
for (int i = 0; i < s.length(); i++) {
// 문자열에 띄어쓰기가 있을 때
if (" ".equals(String.valueOf(s.charAt(i)))) {
answer += " ";
} else {
// 문자열에서 한글자만 charAt으로 가져오고 (int)를 붙여서 글자의 아스키코드를 가져오고 +n 만큼 이동시킨다
change = (int) s.charAt(i) + n;
// 문자열이 대문자 A에서 대문자 Z 사이 일때
if (65 <= (int) s.charAt(i) && (int) s.charAt(i) <= 90) {
if (change > (int) 'Z') {
answer += (char) ((int) 'A' + change - (int) 'Z' - 1);
} else {
answer += (char) change;
}
// 문자열이 소문자 a 에서 소문자 z 사이 일때
} else if (97 <= (int) s.charAt(i) && (int) s.charAt(i) <= 122) {
// 문자열이 소문자 이지만 +n 만큼 이동시켰을 때 z를 넘어간다면 a로 넘어가야함
if (change > (int) 'z') {
answer += (char) ((int) 'a' + change - (int) 'z' - 1);
} else {
// +만큼 이동시킨 문자열 값이 z 보다 작으면 그대로 문자열로 변환
answer += (char) change;
}
// 문자열이 대문자 A에서 대문자 Z 사이 일때
}
}
}
return answer;
}
}
'z' 와 'Z' 를 넘어갈때만 주의해주면 된다
문자열에 띄어쓰기 확인 할때 ' ' == s.charAt 으로도 가능한데
" "로 확인했다 다음에는 제대로 비교할것...
- 다른 사람 풀이
class Solution {
public String solution(String s, int n) {
String answer = "";
for(char ch : s.toCharArray()) {
if(ch==' ') {
answer += ch;
}else if(ch>='a'&& ch<='z'){
answer += (char)('a' + (ch+n-'a')%26);
}else {
answer += (char)('A' + (ch+n-'A')%26);
}
}
System.out.println(answer);
return answer;
}
}
'프로그래머스 > [프로그래머스 - JAVA] Lv.1' 카테고리의 다른 글
[프로그래머스 - JAVA] 최소직사각형 (0) | 2023.04.03 |
---|---|
[프로그래머스 - JAVA] 삼총사 (0) | 2023.04.02 |
[프로그래머스 - JAVA] 예산 (0) | 2023.04.02 |
[프로그래머스 - JAVA] 이상한 문자 만들기 (0) | 2023.03.30 |
[프로그래머스 - JAVA] 같은 숫자는 싫어 (0) | 2023.03.30 |
댓글