-
[프로그래머스] 시저암호 (JAVA / 자바)프로그래머스 2022. 2. 1. 22:37
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://programmers.co.kr/learn/courses/30/lessons/12926#
- 문제 -
풀이 방법
문자열을 하나하나 char 형으로 변환 후 입력된 정수만큼 더한다.
문제에서는 소문자 z 경우만 알려줬지만 여러 시도 후 대문자 Z도 마찬가지인 것을 알았다.
결론은 정수를 더 한 후 z 또는 Z를 넘어가게 되면 a 또는 A부터 돌아가게 하라는 것이다.
알파벳은 대문자 소문자 각각 25개로 z, Z를 넘어갈 경우 -26을 해준다.
-풀이-
class Solution { public String solution(String s, int n) { String answer = ""; //answer에 저장하기 전 연산 과정을 담을 변수 선언 int N = 0; for(int i = 0; i < s.length(); i++){ N = s.charAt(i) + n; //공백일 경우 공백 저장 if(s.charAt(i) == ' '){ answer += s.charAt(i); //해당 문자가 대문자일때 연산 후 Z를 넘어갈 경우, 또는 z를 넘어갈 경우 26을 뺀다. }else if(s.charAt(i) < 91 && N > 90 || N > 122){ N -= 26; answer += (char) N; }else{ answer += (char) N; } } return answer; } }
-결과-
다른 사람들은 블로그에 풀이 후 다른 사람들이 좀 더 깔끔하게 한 풀이를 올려주는데 필자는 직접 풀기도 전에 풀이를 너무 많이 보는 것은 그 사람의 알고리즘 풀이 능력 향상에 큰 도움이 되지 않는다 생각한다. 정 안풀리면 보되 한가지만 보고 최대한 그걸 응용해서 자기가 다시 풀어보는 것을 추천한다. 다른 사람들꺼는 자신이 그 문제를 풀고 나서야 봐도 늦지 않는다고 생각한다.
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 소수 만들기 (JAVA / 자바) (0) 2022.03.28 [프로그래머스] 숫자 문자열과 영단어 (JAVA / 자바) (0) 2022.03.12