Jam's story
[프로그래머스] 시저 암호 본문
class Solution {
public static String solution(String s, int n) {
String answer = "";
char[] cArr=s.toCharArray();
for(int i=0; i<cArr.length; i++){
if(!String.valueOf(cArr[i]).equals(" ")){
if(cArr[i]=='z'){
cArr[i]=(char)(cArr[i]+(n-26));
}else{
cArr[i]=(char)(cArr[i]+n);
}
}
}
answer=String.valueOf(cArr);
return answer;
}
/*
public static void main(String[] args){
String s="AB";
int n=1;
solution(s,n);
}
*/
}
이렇게 풀었는데 , 실행은 통과하지만 제출에서 실패
소문자는 소문자끼리 루프가 돌고, 대문자는 대문자끼리 루프가 돌아야한다고 한다.
- char 배열로 바꿔서 , for 문을 돌면서 문자 하나하나 검사
- 공백이면 그대로 answer에 추가하고 continue로 다음 i 검사
- 소문자일 경우와 대문자일 경우를 나누어서
- 우선 n만큼 더한다음에 z와 Z를 넘으면-26해주기,
class Solution {
public static String solution(String s, int n) {
String answer = "";
char[] cArr=s.toCharArray();
for(int i=0; i<cArr.length; i++){
if(cArr[i]==' '){
answer+=cArr[i];
continue;
}
if(Character.isLowerCase(cArr[i])){
cArr[i]=(char)(cArr[i]+n);
if(cArr[i]>'z') cArr[i]-=26;
}else if(Character.isUpperCase(cArr[i])){
cArr[i]=(char)(cArr[i]+n);
if(cArr[i]>'Z') cArr[i]-=26;
}
answer+=cArr[i];
}
///answer=String.valueOf(cArr);
System.out.println(answer);
return answer;
}
/*
public static void main(String[] args){
String s="AB";
int n=1;
solution(s,n);
}
*/
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이상한 문자 만들기 (0) | 2022.08.09 |
---|---|
[프로그래머스] 약수의 합 (0) | 2022.08.06 |
[프로그래머스] 소수찾기 (0) | 2022.08.04 |
[프로그래머스] 서울에서 김서방 찾기 (0) | 2022.08.04 |
[프로그래머스] 문자열 다루기 기본 (0) | 2022.08.03 |
Comments