https://programmers.co.kr/learn/courses/30/lessons/12926
문제 설명
- 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라 한다.
- 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"이다.
- 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수 완성하기.
제한 조건
- 공백은 아무리 밀어도 공백
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있음
- s의 길이는 8000이하
- n은 1 이상, 25이하인 자연수
아스키코드표는 위와 같다.
1. s문자열은 대문자, 소문자, 공백으로 이루어져 있기 때문에 if문으로 조건을 나눴다.
2. 반복문을 통해 문자열 한 글자씩 int 타입 변수 ascii에 일정 거리 n만큼 더해 저장한다. => 아스키코드값을 저장
3. 대문자와 소문자에서 각각 Z 다음은 A, z 다음은 a이기 때문에 대문자 Z와 소문자 z값이 넘어갈 때 26을 빼준다.
4. ascii 변수를 다시 char형으로 변환하여 answer 문자열에 더해준다.
5. 공백일 경우 공백을 더해준다.
내 코드
class Solution {
public String solution(String s, int n) {
String answer = "";
for(int i=0;i<s.length();i++){
int ascii =(int)(s.charAt(i))+n;
//대문자
if(s.charAt(i)>='A'&&s.charAt(i)<='Z'){
if(ascii>90) ascii-=26;
answer+=(char)(ascii);
}
//소문자
else if(s.charAt(i)>='a'&&s.charAt(i)<='z'){
if(ascii>122) ascii-=26;
answer+=(char)(ascii);
}
//공백
else{
answer+=" ";
}
}
return answer;
}
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[Java] 프로그래머스 > K번째수 (0) | 2022.02.11 |
---|---|
[Java] 프로그래머스 > 예산 (0) | 2022.02.11 |
[Java] 프로그래머스 > 콜라츠 추측 (0) | 2022.02.04 |
[Java] 프로그래머스 > 2016년 (0) | 2022.02.02 |
[Java] 프로그래머스 > 3진법 뒤집기 (0) | 2022.02.02 |
댓글