[programmers] 프로그래머스 Level1 시저 암호
(파이썬 Python)
* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
프로그래머스 Level1 시저 암호
1) 문제
< 문제 구조화 >
제한 조건
1. 공백 - > 공백
밀어도(n)
2. s 길이 < = 8000(s는 알파벳 소,대문자,공백 3개로만 구성)
3. 1 <= n(자연수) <= 25
s = "AB" - > result = "BC"
n = 1
s = "z" - > result = "a"
n = 1
s = "a B z" - > result = "e F d"
n = 4
2) 풀이 과정
1. 구분을 대/소문자/공백 있음으로 나눠서 생각해야 겠구나.
2. 문자열 이니까 인덱스를 활용해서 1만큼 올려주면 되는데, z - > a갈 때는 어떻게 하면 좋을까?
: 나머지를 활용하면 되겠다.
ㄴ>1) 26(문자 개수)보다 작을 경우에는 26으로 나눈 나머지는 그 문자를 의미하겠구나
Ex)
1(index) % 26(문자 개수) - > 1(b)
문자열
: a ~ z = 26개
인덱스번호
: 0 ~ 25 = 26개
ㄴ>2) 26이상일 경우(.find(char)+n)이기에 26으로 나눈 나머지가 0이 되기 때문에 활용
Ex)
26 % 26 - > 0(a)
27 % 26 - > 1(b)
3) 코드
(1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
def solution(s, n):
answer = ''
low = "abcdefghijklmnopqrstuvwxyz"
up = low.upper()
for char in s:
if(char in low):
index = low.find(char) + n
answer += low[index % 26]
elif(char in up):
index = up.find(char) + n
answer += up[index % 26]
else:
answer += " "
return answer
|
cs |
4) 정리 노트
(1)
1
2
3
4
5
6
7
8
9
10
11
12
|
s = "AB"
n = 1
answer = ''
low = "abcdefghijklmnopqrstuvwxyz"
up = low.upper()
for char in s:
print(char)
# A
# B
|
cs |
(2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
s = "AB"
n = 1
answer = ''
low = "abcdefghijklmnopqrstuvwxyz"
up = low.upper()
for char in s:
if(char in up):
index = up.find(char)
print(index)
# 0
# 1
|
cs |
(3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
s = "AB"
n = 1
answer = ''
low = "abcdefghijklmnopqrstuvwxyz"
up = low.upper()
for char in s:
if(char in up):
index = up.find(char) + n
print(index)
# 1
# 2
|
cs |
* 소스 코드 및 정리한 내용의 저작권은 글쓴이에게 있습니다.
'*Algorithm > Programmers_Level1' 카테고리의 다른 글
[programmers] 프로그래머스 Level1 모의고사(파이썬 Python) (0) | 2020.11.20 |
---|---|
[programmers] 프로그래머스 Level1 최대공약수와 최소공배수(파이썬 Python) (0) | 2020.10.14 |
[programmers] 프로그래머스 Level1 이상한 문자 만들기(파이썬 Python) (0) | 2020.10.05 |
[programmers] 프로그래머스 Level1 콜라츠 추측(파이썬 Python) (0) | 2020.09.05 |
[programmers] 프로그래머스 Level1 x만큼 간격이 있는 n개의 숫자(파이썬 Python) (0) | 2020.09.03 |
댓글