프로그래머스/[프로그래머스 - JAVA] Lv.1
[프로그래머스 - JAVA] 시저 암호
코딩하는 흰둥이
2023. 4. 2. 21:59
- 내 풀이
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;
}
}