Hayden's Archive
[알고리즘] 프로그래머스 : 시저 암호 본문
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12926
내가 작성한 코드
아스키코드 숫자값을 활용하여 문제를 풀었다. 아스키코드에서 대문자는 65~90, 소문자는 97~122의 값을 가지는데 들어오는 문자열을 char[] 배열로 변환하여 각각의 문자를 정수로 변환하여 조건문으로 분류한다. 공백은 아스키코드로 0이므로 0일 때는 그냥 지나가게 하고 알파벳일 경우는 원래 아스키번호에 이동하는 n만큼 더하고 시작 알파벳(A, a)의 아스키코드 숫자로 나눈 나머지를 반복 주기 26만큼 나눈 나머지로 하여 65에 더한다. 그 뒤 char형으로 캐스팅하면 된다.
class Solution {
public String solution(String s, int n) {
String answer = "";
char[] sChar = s.toCharArray();
int asciiNum = 0;
int totalNum = 0;
for(int i=0; i<sChar.length; i++){
asciiNum = (int)sChar[i];
if(asciiNum == 0) continue;
totalNum = asciiNum + n;
if(asciiNum>=65 && asciiNum<=90){//대문자
totalNum = 65+(totalNum%65)%26;
sChar[i] = (char)totalNum;
}
if(asciiNum>=97 && asciiNum<=122){//소문자
totalNum = 97+(totalNum%97)%26;
sChar[i] = (char)totalNum;
}
}
answer = new String(sChar);
return answer;
}
}
참고 : 아스키코드 https://blog.naver.com/qodhr222/221963720609