다희의 코딩 성장일기
[프로그래머스] level1. 시저 암호 (자바 JAVA) 본문
[ 문제 ] [프로그래머스] level1. 시저 암호 (자바 JAVA)
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12926
# 접근 방법 및 풀이
- 먼저 String s에서 대문자와 소문자를 구분해야한다. 알파벳은 A-Z, a-z 이렇게 대문자와 소문자로 구성되어있다.
- 해당문자에서 n번 민다는 말은 예를들어 n이 4이면 A->B->C->D->E 가 된다는 의미이고, 마지막 Z에선 다시 A로 돌아가면 된다. 따라서 해당문자에서 n을 더하면 다음 문자가 나올것이다.
- A는 65고 n = 4를 더하면 69이다. 아스키코드 69는 E이다.
- 변수 word에 s.charAt(i)번째의 문자 + n을 해서 추가할 단어로 표현했다.
- 여기서 중요한건 Z보다 값이 더 커지면 A부터 돌아가야하기 때문에 (word-'z'+'a'-1)로 구성했다.
- 문자의 대소문자 구분은 Character.isLowerCase() 가 있다는걸 처음 알게되서 이걸 사용해서 풀었다.
- 자세한건 코드참조
# 주의할 점
- 없음
JAVA 코드
class Solution {
public String solution(String s, int n) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
char word = (char)(c+n);
if(c == ' '){
sb.append(c);
continue;
}
if(Character.isLowerCase(c)){
word = (word >'z')? (char)(word-'z'+'a'-1) : word;
}else{
word = (word >'Z')? (char)(word-'Z'+'A'-1) : word;
}
sb.append(word);
}
return sb.toString();
}
}
REVIEW
레벨 1중에 괜찮은 문제다!
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] level1. 문자열 내마음대로 정렬하기 (자바 JAVA) (0) | 2021.08.20 |
---|---|
[프로그래머스] level1. 2016년 (자바 JAVA) (0) | 2021.08.20 |
[프로그래머스] level1. 가운데 글자 가져오기 (자바 JAVA) (0) | 2021.08.20 |
[프로그래머스] level1. 나누어 떨어지는 숫자 배열 (자바 JAVA) (0) | 2021.08.20 |
[프로그래머스] level1. 콜라츠 추측 (자바 JAVA) (0) | 2021.08.20 |
Comments