Level1) 시저 암호
2020. 9. 9. 19:30ㆍPS/programmers
class Solution {
public String solution(String s, int n) {
char[] arr = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z'};
char[] brr = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
'W', 'X', 'Y', 'Z'};
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) >= 'a' && s.charAt(i) <= 'z') {
sb.append(arr[(s.charAt(i) -'a' + n)%26]);
} else if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') {
sb.append(brr[(s.charAt(i) -'A' + n)%26]);
} else {
sb.append(" ");
}
}
return sb.toString();
}
}
- 성공
- 무식한 방법 같긴 한데 다른 방법 생각이 안나서 해봤음 ...
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;
}
}
- 다른 사람 비슷한 풀이인데 이렇게 하는게 훨씬 좋아보임
- 소문자, 대문자 구분
- (char) ('a' + (ch+n-'a') % 26)
- (char) ('A' + (ch+n-'A') % 26)
'PS > programmers' 카테고리의 다른 글
Level1) 완주하지 못한 선수 (0) | 2020.09.10 |
---|---|
Level1) 약수의 합 (0) | 2020.09.09 |
Level1) 문자열을 정수로 바꾸기 (0) | 2020.09.09 |
Level1) 수박수박수박수박수박수? (0) | 2020.09.09 |
Level1) 소수 찾기 (0) | 2020.09.09 |