-
반응형
안녕하세요, 하루플 입니다.
시저암호 문제입니다.
문제 요약
AB 를 1만큼 밀면 BC 가 되고, 3만큼 밀면 DE 가 된다.
z는 1만큼 밀면 a가 된다.
문자열 s와 거리 n을 입력받아 n만큼 민 암호문을 return 하시오.
제한 조건
- 공백은 아무리 밀어도 공백입니다.
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
- s의 길이는 8000이하입니다.
- n은 1 이상, 25이하인 자연수입니다.
먼저, 한 글자식 읽기 위해 for문에서 char ch = s.charAt(i)를 합니다.
Character.isLowerCase() 함수는 입력받은 인자가 영문 소문자인지 여부를 판단하여 true나 false를 리턴합니다.
반대로 Character.isUpperCase()는대문자를 판단합니다.
if문 내부에서 ch = (char)((ch-'a'+n)%26 + 'a');를 뜯어보면
아스키 코드 값으로 계산하기 때문에 n 과 같이 int 형 계산이 가능합니다.
%26을 통해 나머지를 계산할 수 있습니다.
즉, z 이상 값을 나머지로 편리하게 계산 후 마지막에 +'a' 하여 값을 구할 수 있습니다.
대문자도 마찬가지 방법으로 계산할 수 있습니다.
마지막에 String 형인 answer에 char형 ch를 넣어주기 위해 answer += ch; 를 해줍니다.
반응형'개발 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JAVA] 자릿수 더하기 (0) 2021.10.31 [프로그래머스/JAVA] 이상한 문자 만들기 (0) 2021.10.31 [프로그래머스/JAVA] 가운데 글자 가져오기 (0) 2021.10.30 [프로그래머스/JAVA] 같은 숫자는 싫어 (0) 2021.10.30 [프로그래머스/JAVA] 기능개발 (0) 2021.10.30 댓글