Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 프로그래머스N으로표현
- 프로그래머스자바
- 백준피보나치수
- 알고리즘
- 자바
- 카카오코딩연습
- 프로그래머스
- C++
- 백준벌집
- 인텔리제이단축키
- dfs
- 프로그래머스전화번호목록
- 테스트클래스생성단축키
- 코딩연습
- 백준하노이탑
- 백준피보나치
- 스프링부트와 AWS로혼자구현하는웹서비스
- java
- springboot
- intelliJ단축키
- 백준
- 완전탐색
- 백준팩토리얼자바
- 프로그래머스완주하지못한선수
- 알고리즘공부
- 백준팩토리얼
- 프로그래머스해쉬
- 전화번호목록자바
- 인텔리제이테스트클래스생성
- 프로그래머스JAVA
Archives
- Today
- Total
말랑말랑
[프로그래머스] 시저 암호 본문
[20-09-18]
C++를 하면서 제일 싫은게 메모리릭 관리와 문자열 처리였는데
하기 싫고 어려웠던 부분인 만큼 나름 깊이있게 알고 있는 부분들도 저 부분이였다. ㅎㅅㅎ...
또 Call By Pointer 방식에 익숙해져 있다가 Call By Reference 방식으로 하려니
조금 어색한 감이 있었는데, 그래도 나름 잘 적응해 가는 중이다.
시저 암호
문제
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.
제한 조건
- 공백은 아무리 밀어도 공백입니다.
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
- s의 길이는 8000이하입니다.
- n은 1 이상, 25이하인 자연수입니다.
입출력 예
s |
n |
result |
AB |
1 |
BC |
z |
1 |
a |
풀이
class Solution {
public String solution(String s, int n) {
String answer = "";
char[] charArr = s.toCharArray();
char[] resultChar = new char[charArr.length];
for(int i=0 ; i<charArr.length ; i++) {
if(charArr[i] == ' ') { // 공백이면 패스
resultChar[i] = charArr[i];
} else {
int code = 0;
int pivotCode = 'A';
if(Character.isLowerCase(charArr[i])) {
pivotCode = 'a';
}
int startDis = (int)(charArr[i] + n) - pivotCode; // 'A'와 떨어져 있는 거리를 구함
// 만약 'A'와 떨어져있는 거리가 25을 초과하여 다른 문자를 가르키면 안되기 때문에 %로 나누어 처리함.
code = pivotCode + (startDis % 26); // 26은 알파벳 갯수
char moveChar = (char)code;
resultChar[i] = moveChar;
}
}
answer = String.valueOf(resultChar);
return answer;
}
}
저번에 Arrays와 같은 편리한 객체를 몰랐던게 억울해서 이번엔 필요한 메소드들이 있는지 찾아보면서 했당.
그리고 z를 입력 받았을 때의 처리를 수식으로 몇줄 안되게 했다가, 가독성이 너무 떨어져 보여서 풀어서 작성해봤당. 수정 후 코드가 확실히 가독성이 좋아져서 만족.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 여행경로 (0) | 2021.06.04 |
---|---|
[프로그래머스] 두 개 뽑아서 더하기 (0) | 2021.04.07 |
[프로그래머스] 완주하지 못한 선수 (0) | 2021.04.06 |
[프로그래머스] 크레인 인형뽑기 (0) | 2020.09.21 |
[프로그래머스] K번째 수 (0) | 2020.09.21 |
Comments