728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | O |
본인의 실력으로 풀었는가? | O |
코딩테스트 연습 - 시저 암호
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀
programmers.co.kr
class Solution {
var alphabet = arrayOf("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
fun solution(s: String, n: Int): String {
var arr = s.chunked(1);
var answer = Array(arr.size){" "};
for (i in 0..arr.size - 1) {
if (arr[i] == " ") continue;
var position = alphabet.indexOf(arr[i]);
if (position == -1) {
var word = arr[i].toUpperCase();
position = alphabet.indexOf(word);
answer[i] = alphabet[func(position + n)].toLowerCase();
} else {
answer[i] = alphabet[func(position + n)];
}
}
return answer.joinToString("");
}
fun func(num: Int): Int {
var n = 0;
if (num >= 26) n = num - 26 else n = num
return n;
}
}
테스트 1 〉 | 통과 (21.58ms, 66.3MB) |
테스트 2 〉 | 통과 (21.49ms, 66.2MB) |
테스트 3 〉 | 통과 (21.28ms, 66.7MB) |
테스트 4 〉 | 통과 (29.02ms, 65.7MB) |
테스트 5 〉 | 통과 (25.28ms, 66.4MB) |
테스트 6 〉 | 통과 (26.19ms, 66.3MB) |
테스트 7 〉 | 통과 (21.73ms, 66.2MB) |
테스트 8 〉 | 통과 (22.64ms, 66MB) |
테스트 9 〉 | 통과 (21.39ms, 66.3MB) |
테스트 10 〉 | 통과 (22.76ms, 66.4MB) |
테스트 11 〉 | 통과 (23.57ms, 66MB) |
테스트 12 〉 | 통과 (21.94ms, 66.2MB) |
테스트 13 〉 | 통과 (28.62ms, 67.4MB) |
for문 안의 if문의 숫자 계산은 비슷해서 비슷한 부분은 따로 함수 선언해서 만들었음.
그래서 소문자면 대문자로 바꿔서 alphabet 배열의 위치랑 파악한 후 다시 소문자로 변환
대문자는 그대로 위치만 이동
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[kotlin] 프로그래머스 - 수박수박수박수박수박수? (1단계) (0) | 2022.04.08 |
---|---|
[kotlin] 프로그래머스 - 문자열을 정수로 바꾸기 (1단계) (0) | 2022.04.08 |
[kotlin] 프로그래머스 - 약수의 합 (1단계) (0) | 2022.04.07 |
[kotlin] 프로그래머스 - 이상한 문자 만들기 (1단계) (0) | 2022.04.06 |
[kotlin] 프로그래머스 - 자릿수 더하기 (1단계) (0) | 2022.04.06 |