Algorithm/프로그래머스
[프로그래머스>Lv1] 둘만의 암호 - kotlin & python
RIEN😚
2023. 2. 3. 17:07
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제
[입력]
두 문자열 s와 skip
자연수 index
- 문자열 s의 각 알파벳을 index 만큼 뒤의 알파벳으로 바꿔줍니다.
- index만큼 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아갑니다.
- skip 안에 있는 알파벳을 제외하고 건너뜁니다.
[출력]
위 규칙대로 s를 변환한 결과를 return
2. 풀이
이 문제에서 가장 중요한 점은 제한 사항에 나와있는
🌹 skip에 포함되는 알파벳은 s에 포함되지 않습니다.
이 부분입니다.
때문에
a ~ z 중에서 skip에 나온 알파벳을 제외하고나서 계산할 수 있는 이유입니다.
3. 코드
kotlin
class Solution {
fun solution(s: String, skip: String, index: Int): String {
var answer: String = ""
val skipped = skip.map { it.toChar() }
val alphabet = ('a'..'z').filter { it !in skipped }
s.forEach {
val i = (alphabet.indexOf(it) + index) % alphabet.size
answer += alphabet[i]
}
return answer
}
}
python
def solution(s, skip, index):
answer = ''
skip = [ord(x) for x in skip]
alphabet = [x for x in range(ord('a'),ord('z')+1) if x not in skip]
size = len(alphabet)
for i in s:
pos = (alphabet.index(ord(i)) + index) % size
answer += chr(alphabet[pos])
return answer
반응형