문제
코딩테스트 연습 - 시저 암호
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀
programmers.co.kr
풀이
단순하게 대문자인지 소문자인지 확인하고 더해놓고 기준을 넘어가면 다시 빼줬다.
class Solution {
public String solution(String s, int n) {
char c[] = s.toCharArray();
// 대문자 65-90 소문자 97-122
for (int i=0;i<c.length;i++){
// 대문자인데 더했을때 90 넘어가면 -26
if (c[i]>=65 && c[i]<=90){
c[i]+=n;
if (c[i]>90) c[i]-=26;
}
// 소문자인데 122 넘어가면 -26
else if (c[i]>=97 && c[i]<=122){
c[i]+=n;
if (c[i]>122) c[i]-=26;
}
}
return String.valueOf(c);
}
}
+
다른사람풀이
알파벳 아스키코드를 몰라도 풀수 있는 방법이었다.
a-z까지 개수가 26이나 처음부턴 n에 26을 나눈 몫을 주고,
Character.isLowerCase()와 isUpperCase()로 대문자 소문자를 구별했다.
class Solution {
public String solution(String s, int n) {
n=n%26;
char c[] = s.toCharArray();
for (int i=0;i<c.length;i++){
if (Character.isUpperCase(c[i])){
c[i] = (char)((c[i]-'A'+n)%26+'A');
}
else if (Character.isLowerCase(c[i])){
c[i] = (char)((c[i]-'a'+n)%26+'a');
}
}
return String.valueOf(c);
}
}
'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 : 모의고사 (0) | 2022.02.11 |
---|---|
[Java] 프로그래머스 : k번째 수 (0) | 2022.02.11 |
[Java] 프로그래머스 : 콜라츠 추측 (0) | 2022.02.07 |
[Java] 프로그래머스 : 3진법 뒤집기 (0) | 2022.02.07 |
[Java] 프로그래머스 : 이상한 문자 만들기 (0) | 2022.02.07 |