Level. 1
문제
풀이
class Solution {
public String solution(String s, int n) {
String answer = "";
n = n%26;
for(int i=0; i<s.length(); i++){
char ch = s.charAt(i);
if(Character.isLowerCase(ch)){
ch = (char)(ch+n);
if(!Character.isLowerCase(ch))
ch -= 26;
}
if(Character.isUpperCase(ch)){
ch = (char)(ch+n);
if(!Character.isUpperCase(ch))
ch -= 26;
}
answer += ch;
}
return answer;
}
}
해결방법
z 는 1만큼 밀면 a가 되고, Z는 1만큼 밀면 A가 되어야 한다.
- 각각 소문자일때 대문자일 때를 구분한다.
- + 1 을 했을 때 더 이상 소문자, 대문자가 아닐 경우 각각 z, Z 에서 + 1 이 되어 소문자, 대문자의 범위를 넘어갔다는 것을 의미한다
-26 해주어 a, A로 변경한다.
Character.isLowerCase(), Character.isUpperCase()
public static boolean isLowerCase(char ch)
public static boolean isUpperCase(char ch)
입력받은 인자가 영문 소문자인지 대문자인지 여부를 판단하여 각각 true, false값을 리턴한다.
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스] 문자열 내 p와 y의 개수 / Stream , chars() , filter() (0) | 2023.05.06 |
---|---|
[프로그래머스] 삼총사 / DFS (0) | 2023.05.06 |
[프로그래머스] 문자열을 정수로 바꾸기 / valueOf , int와 Integer (0) | 2023.04.29 |
[프로그래머스] 가운데 글자 가져오기 - substring (0) | 2023.04.11 |
[프로그래머스]문자열 내림차순으로 배치하기 (0) | 2023.04.11 |