HelloMinchan
처음처럼
HelloMinchan
LinkedIn
전체 방문자
오늘
어제
  • 분류 전체보기 (306)
    • Backend (4)
      • NestJS (1)
      • Express (1)
      • Spring (2)
    • Infrastructure (1)
      • AWS (1)
    • Frontend (1)
      • Next.js (1)
    • Language & Runtime (4)
      • Java (2)
      • Node.js (2)
    • Computer Science (8)
      • Computer Networks (3)
      • Operating Systems (4)
      • OOP (1)
    • 독서 (4)
      • 데이터 중심 애플리케이션 설계 (3)
      • 객체지향의 사실과 오해 (1)
    • 회고 (4)
      • Project (2)
      • Career (2)
    • Deprecated (280)

채널

  • GitHub
  • LinkedIn

최근 글

태그

  • 프로그래머스C++
  • 데이터베이스
  • 개발자
  • 알고스팟
  • 프로그래밍
  • 알고스팟Python
  • 프로그래머스Python
  • front-end
  • back-end
  • 백준Python
  • 프로그래머스
  • Baekjoon Online Judge
  • Algospot
  • Database
  • 백엔드
  • programmers
  • 백준C++
  • 백준Go
  • 백준
  • 코딩

최근 댓글

인기 글

hELLO
HelloMinchan

처음처럼

[programmers] 프로그래머스 시저 암호(Python)
Deprecated

[programmers] 프로그래머스 시저 암호(Python)

2020. 6. 13. 00:58

(주)그렙

[programmers] 프로그래머스 시저 암호

(Python)

(글쓴날 : 2020.06.13)

 


* programmers, 프로그래머스 문제 Python 언어 풀이입니다.

* 소스 코드의 저작권은 글쓴이에게 있습니다.


 

 

프로그래머스 시저 암호


1) 문제

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12926 

 

코딩테스트 연습 - 시저 암호

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가

programmers.co.kr


2) 풀이 과정

* 시간 복잡도 : O(n)

 

알파벳 소문자, 대문자, 공백으로 이루어진 문자열이 주어질 때, 각 알파벳들을 n만큼씩 민 순서의 알파벳으로 변환 시키는 문제입니다.

단, 'z' 혹은 'Z'를 넘어갈 경우 경우 각각 'a'와 'A'로 다시 돌아갑니다.

 

저의 경우, Python을 사용했습니다.

우선, ord() 함수를 이용해 주어지는 n만큼 알파벳들을 밀었을 때의 아스키코드를 구한 뒤, 'z' 혹은 'Z'일 경우, 소문자일 경우, 대문자일 경우로 각각 분기하여 처리하였습니다.

만약, 구한 아스키코드값이 'z' 혹은 'Z'이거나, 소문자 및 대문자인 경우 중 각각 'z'와 'Z'를 초과한 경우에 아스키코드값에서 알파벳의 개수인 26을 뺀 값에 해당하는 알파벳을 구하여 문제를 해결했습니다.


3) 코드

 

* Python 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def solution(s, n):
    answer = ''
    
    for alpha in s:
        if alpha != ' ':
            asciiNum = ord(alpha) + n
            
            if alpha == 'z' or alpha == 'Z':
                asciiNum -= 26
            elif alpha.islower():
                if asciiNum >= 97 + 26:
                    asciiNum -= 26
            else:
                if asciiNum >= 65 + 26:
                    asciiNum -= 26
            
            answer += chr(asciiNum)
            continue
            
        answer += alpha
        
    return answer

 

저작자표시 비영리 변경금지

'Deprecated' 카테고리의 다른 글

[programmers] 프로그래머스 이상한 문자 만들기(Python)  (0) 2020.06.13
[programmers] 프로그래머스 약수의 합(Python)  (0) 2020.06.13
[programmers] 프로그래머스 문자열을 정수로 바꾸기(Python)  (0) 2020.06.13
[programmers] 프로그래머스 수박수박수박수박수박수?(Python)  (0) 2020.06.12
[programmers] 프로그래머스 소수 찾기 Level 1(Python)  (0) 2020.06.12
    'Deprecated' 카테고리의 다른 글
    • [programmers] 프로그래머스 이상한 문자 만들기(Python)
    • [programmers] 프로그래머스 약수의 합(Python)
    • [programmers] 프로그래머스 문자열을 정수로 바꾸기(Python)
    • [programmers] 프로그래머스 수박수박수박수박수박수?(Python)
    HelloMinchan
    HelloMinchan
    Though you should not fear failure, You should do your very best to avoid it.

    티스토리툴바