티스토리 뷰
💻JAVA 코드 바로보기
□문제 설명
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "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" |
"a B z" | 4 | "e F d" |
🌼JAVA 알고리즘
□초기화면
□Ascii Code
□풀이과정
문자열을 한글자씩 검사하여 1)공백일 경우 answer에 공백을, 2)옮겼을 때 영문자일 경우 이동한 문자를, 3)옮겼을 때 영문자가 아닐 경우 문자-26(a와 z의 사이 거리)를 answer에 추가하는 방법을 사용했으나 안맞는 경우가 존재했다. => 'Z'+10 = 90 + 10 = 100 = 'd' => 2)조건에 true값으로 적용되어 예상값 'J'가 나오지 않는다. => 소문자의 경우와 대문자의 경우를 따로 보아야함을 알 수 있다. |
class Solution {
public String solution(String s, int n) {
String answer = "";
for(int i=0;i<s.length();i++){
char check = s.charAt(i);
if(check==' '){
answer+=' ';
continue;
}
if((check+n>='a'&&check+n<='z')||(check+n>='A'&&check+n<='Z'))
answer+=Character.toString((char)(check+n));
else
answer+=Character.toString((char)(check+n-26));
}
return answer;
}
}
class Solution {
public String solution(String s, int n) {
String answer = "";
for(int i=0;i<s.length();i++){
char check = s.charAt(i);
if(check==' '){
answer+=' ';
continue;
}
if(check>='a'&&check<='z'){
if((check+n>='a'&&check+n<='z')){
answer+=Character.toString((char)(check+n));
}
else
answer+=Character.toString((char)(check+n-26));
}
else if(check>='A'&&check<='Z'){
if(check+n>='A'&&check+n<='Z'){
answer+=Character.toString((char)(check+n));
}
else
answer+=Character.toString((char)(check+n-26));
}
}
return answer;
}
}
위의 코드에서 소문자일 경우 if(check>='A'&&check<='Z')와 대문자일 경우 if(check>='A'&&check<='Z') 를 isLowerCase()와 isUpperCase()를 사용하여 좀 더 단순화했다. |
class Solution {
public String solution(String s, int n) {
String answer = "";
for(int i=0;i<s.length();i++){
char check = s.charAt(i);
char add = (char)(check+n);
if(check==' '){
answer+=' ';
continue;
}
if(Character.isLowerCase(check)){
if(Character.isLowerCase(check+n)) answer+=add;
else answer+=(char)(add-26);
}
else if(Character.isUpperCase(check)){
if(Character.isUpperCase(check+n)) answer+=add;
else answer+=(char)(add-26);
}
}
return answer;
}
}
□링크
코딩테스트 연습 - 시저 암호
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀
programmers.co.kr
About Me
💻GitHub/KimSky904 KimSky904 - Overview Department of New Media Software. KimSky904 has 8 repositories available. Follow their code on GitHub. github.com
code-review.tistory.com
'[코테] > [Programmers Lv1]' 카테고리의 다른 글
[Programmers] Lv1_같은 숫자는 싫어 (JAVA) (0) | 2021.07.16 |
---|---|
[Programmers] Lv1_폰켓몬 (JAVA) (0) | 2021.07.16 |
[Programmers] Lv1_소수 찾기 (JAVA) (2) | 2021.07.15 |
[Programmers] Lv1_행렬의 덧셈 (JAVA) (0) | 2021.07.14 |
[Programmers] Lv1_문자열 내 마음대로 정렬하기 (JAVA) (0) | 2021.07.14 |
댓글
공지사항
최근에 올라온 글
TAG
- C++
- groomedu
- 코스프로
- lv1
- 구름에듀 기출문제
- Cos Pro
- 자바
- YBM기출
- programmers
- 알고리즘
- 1급
- lv2
- cospro기출
- 기출문제
- c언어
- 배열
- YBM
- 배열활용문제
- 구름 기출문제
- groom
- 연습문제
- c언어 기출문제
- 프로그래머스
- cospro기출문제
- Java
- CosPro
- COSPRO 2급
- 구름에듀
- C
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
글 보관함