728x90
문제풀이
import java.util.*;
public class Solution {
public String decryptCaesarCipher(String str, int secret) {
/*
아스키코드사용
1. 문자열에서 charAt검색
2. askicode에 해당하는 숫자로 변환
3. 해당 숫자-secret한 문자 반환
3. 문자를 문자열로 변환
*/
String result = "";
for(int i=0 ; i< str.length() ; i++) {
// 빈칸은 어차피 아스키코드 10진법상 64이므로, 96~123 사이의 숫자가 아니라서 cha에 그대로 할당되어 result에 그대로 추가됨
// if(str.charAt(i)==' ') {
// result += str.charAt(i);
// }
char cha = str.charAt(i);
if(cha>96 && cha<123) {
cha -= secret;
if(cha < 97) {
cha +=26;
}
}
result += cha;
}
return result;
}
}
Reference
package com.codestates.coplit;
import java.util.*;
public class Solution {
public String decryptCaesarCipher(String str, int secret) {
String alpha = "abcdefghijklmnopqrstuvwxyz";
String result = "";
for(int i = 0; i < str.length(); i++) {
if(str.charAt(i) == ' ') {
result = result + str.charAt(i);
} else {
int asis = alpha.indexOf(str.charAt(i));
//전체 길이를 더하고, 나머지를 구하는 이유는 해당 문자열의 index를 벗어날 경우를 고려한 계산식
int tobe = (asis - secret + alpha.length()) % alpha.length();
result = result + alpha.charAt(tobe);
}
}
return result;
}
}728x90
'알고리즘 저장소 (일반방식과 나만의 풀이) > JAVA' 카테고리의 다른 글
| tiling 알고리즘 (0) | 2022.09.01 |
|---|---|
| 트리 BFS 코드 (0) | 2022.08.24 |
| 버블 정렬(Bubble sort) 구현하기 (0) | 2022.08.22 |
| 문자열에서 연속된 중복문자 세기 (0) | 2022.08.12 |
| 바빌로니아 점화식 (0) | 2022.08.12 |