개발하는 사막여우
개발하는 사막여우
개발하는 사막여우
전체 방문자
오늘
어제
  • All (310)
    • Books (13)
      • 읽기 좋은 코드가 좋은 코드다 (13)
    • Study (6)
      • Blockchain (3)
      • Algorithm (3)
    • Baekjoon (36)
    • Programmers (166)
    • LeetCode (15)
    • Open Source (1)
      • Youtube Popout Player (1)
    • Language (32)
      • Python (9)
      • JS (8)
      • Java (5)
      • HTML (6)
      • CSS (4)
    • Library & Framework (15)
      • React.js (15)
    • IDE (2)
      • IntelliJ (2)
    • Airdrop (9)
    • Tistory (2)
    • etc.. (12)
      • Cozubi (6)
      • lol-chess (0)

블로그 메뉴

  • Github

공지사항

인기 글

태그

  • 카카오 공채
  • 2018 KAKAO BLIND RECRUITMENT
  • 코주비
  • Python
  • Java
  • 읽기 좋은 코드가 좋은 코드다
  • 클린 코드 작성법
  • 파이썬
  • 코인줍줍
  • Cozubi
  • 카카오 알고리즘 문제
  • 카카오 코딩테스트
  • 프로그래머스
  • 코딩테스트연습
  • 프로그래머스 위클리 챌린지
  • programmers
  • 클린 코드
  • 신규 코인 에어드랍
  • 알고리즘문제풀이
  • 백준

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
개발하는 사막여우

개발하는 사막여우

[프로그래머스] 시저 암호 / Python
Programmers

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

2021. 1. 14. 08:59
반응형

문제주소 :programmers.co.kr/learn/courses/30/lessons/12926

 


<문제 설명>

더보기

문제 설명

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.

제한 조건

  • 공백은 아무리 밀어도 공백입니다.
  • s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
  • s의 길이는 8000이하입니다.
  • n은 1 이상, 25이하인 자연수입니다.

입출력 예

s                                                n                                               result
AB 1 BC
z 1 a
a B z 4 e F d

 

<풀이법>

▒ 한줄 개념: 아스키코드 ▒ 

문자열을 아스키 코드를 이용하여 변환하는 문제입니다.

다음은 아스키 코드 표입니다. 

아스키 코드는 미국 ANSI에서 표준화한 정보교환용 7비트 부호체계이다. 000(0x00)부터 127(0x7F)까지 총 128개의 부호가 사용된다. 이는 영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 부호 체계이며, 매우 단순하고 간단하기 때문에 어느 시스템에서도 적용가능하다는 장점이 있으나, 2바이트 이상의 코드를 표현할 수 없기 때문에 국제표준의 위상은 유니코드에게 넘어갔다. -위키피디아(namu.wiki/w/아스키코드)

아스키 코드는 위의 설명에서 말하듯이 영문키보드로 입력할 수 있는 모든 기호들이 숫자로 할당되어있습니다.

위 표에서 파란색 네모가 영문자이고, 초록색 네모가 해당 문자를 표현할 수 있는 숫자입니다.

파이썬에서는 ord(c)을 통해 c에 해당하는 아스키 코드 숫자를 얻을 수 있고, chr(n)을 통해 n에 해당하는 아스키 코드 기호를 얻을 수 있습니다. 아스키 코드에는 심지어 공백또한 아스키 코드에 존재합니다.(space)

 

따라서 이 두 함수를 이용하여 적절한 문자변환을 이루어 내면 됩니다.

 

 

<코드(Python)>

def solution(s, n):
    pushed = ""
    for c in s:
        if ord(c) == 32:
            pushed += " "
        elif ord(c) + n > 90 and c.isupper():
            pushed += chr(ord(c)+n - 26)
        elif ord(c) + n > 122:
            pushed += chr(ord(c)+n - 26)
        else:
            pushed += chr(ord(c)+n)
    
    return pushed

 

 

더 많은 코드 보기(GitHub) : github.com/dwkim-97/CodingTest

 

 

반응형

'Programmers' 카테고리의 다른 글

[프로그래머스] 이상한 문자 만들기 / Python  (0) 2021.01.14
[프로그래머스] 약수의 합 / Python  (0) 2021.01.14
[프로그래머스] 수박수박수박수박수박수? / Python  (0) 2021.01.13
[프로그래머스] 소수 찾기(Level 1) / Python  (0) 2021.01.13
[프로그래머스] 서울에서 김서방 찾기 / Python  (0) 2021.01.13
    'Programmers' 카테고리의 다른 글
    • [프로그래머스] 이상한 문자 만들기 / Python
    • [프로그래머스] 약수의 합 / Python
    • [프로그래머스] 수박수박수박수박수박수? / Python
    • [프로그래머스] 소수 찾기(Level 1) / Python
    개발하는 사막여우
    개발하는 사막여우
    개발개발 주저리주저리

    티스토리툴바