https://school.programmers.co.kr/learn/courses/30/lessons/12926
문제설명
주어진 문자열의 알파벳을 주어진 숫자만큼 밀어낸 결과를 출력하기
제한조건
공백은 밀어도 공백이다.
주어진 문자열은 대문자, 소문자, 공백으로 이루어져 있다.
문자열의 길이는 8000 이하
n은 1~25의 자연수
예시
알파벳 : "a B z"
숫자 : 4
결과 : "e F d"
풀이 과정
처음 문제를 보고 풀었을 때에는 for문을 통해 하나씩 가져온 알파벳들의 아스키코드를 단순히 n만큼 증가시키는 코드를 작성했다. 하지만 이렇게 풀 경우, ' Z ' 와 ' z '를 넘어가면서 알파벳이 아닌 값이 나오게 된다. 그래서 if문을 통해서 구간을 나눠주었다.
문자열은 알파벳 혹은 공백이고 n은 1~25의 자연수기 때문에 만약 n만큼 더한 아스키코드값이 알파벳의 범위를 벗어난다면 -26을 해서 다시 ' A ' 혹은 ' a '부터 시작하게 한다. 그 후 char 타입으로 변환 후 결과값에 더해준다.
그리고 공백일 경우 그냥 결과값에 더해주고 n을 더한 값이 알파벳이라면 타입 변환 후 결과값에 더해준다.
public class P12926 {
public static void main(String[] args) {
Solution sol = new Solution();
String s = "a B z";
int n = 4;
String result = sol.solution(s,n);
System.out.println(result); // "e F d"
}
static class Solution {
public String solution(String s, int n) {
String answer = "";
for(int i=0; i<s.length(); i++){
if((s.charAt(i)+n > 'Z' && s.charAt(i) < 'a')|| s.charAt(i)+n > 'z'){
// n을 더한 값이 알파벳의 범위를 벗어났을 경우
answer += (char)(s.charAt(i) -26 +n);
} else if (s.charAt(i) == ' '){
// 공백일 경우
answer += s.charAt(i);
} else{
// 그 외 알파벳의 범위안에 있을 경우
answer += (char)(s.charAt(i)+n);
}
}
return answer;
}
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/12926
'개발일지' 카테고리의 다른 글
20231204 - 프로그래머스/12915 (2) | 2023.12.04 |
---|---|
20231201 - Dto 테스트 (0) | 2023.12.01 |
20231129 - UserDetails, UserDetailsService (0) | 2023.11.29 |
20231128 - 세 번째 팀 프로젝트를 마치며 (0) | 2023.11.28 |
20231127 - redis 사용법 (0) | 2023.11.27 |