📚
Python_Study
  • Python_Study
  • OT
    • 스터디 소개
    • 백준 설정하기
    • 질문 / 답변 / 과제 인증 방법
  • 1주차
    • 입출력과 변수, 주석
    • 제어문 1
    • 제어문 2
    • 제어문 3
    • 복습 문제
  • 2주차
    • 다양한 출력 방법
    • 문자열
    • 리스트(list)
    • 튜플(tuple)
  • 3주차
    • 다양한 함수
    • 세트(set)
    • 딕셔너리(dict)
    • 복습 문제
  • 4주차
    • 멤버 연산자
    • 아스키 코드
    • EOF
    • 복습 문제
  • 5주차
    • 진법 변환
    • 회문(팰린드롬)
    • 스택(stack)
    • 복습 문제
  • 6주차
    • 2차원 리스트
    • 정렬 심화
    • 자주 사용하는 모듈
    • 복습 문제
  • 7주차
    • 카이사르 암호
    • 순열과 조합
    • 큐(queue), 덱(deque)
    • 복습 문제
  • 8주차
    • 시계 문제
    • 얕은 복사, 깊은 복사
    • 재귀 함수 Ⅰ
    • 복습 문제
  • 9주차
    • 재귀 함수 Ⅱ
    • 그래프 알고리즘 소개
    • 플러드 필
    • 복습 문제
  • 10주차
    • 시뮬레이션Ⅰ
      • BOJ 15686 - 치킨 배달
      • BOJ 17070 - 파이프 옮기기 1
      • BOJ 21608 - 상어 초등학교
      • BOJ 11559 - Puyo Puyo
  • 11주차
    • 시뮬레이션 Ⅱ
      • BOJ 8972 - 미친 아두이노
      • BOJ 16234 - 인구 이동
      • BOJ 17135 - 캐슬 디펜스
      • BOJ 21610 - 마법사 상어와 비바라기
Powered by GitBook
On this page
  • 아스키 코드
  • 연습문제
  • BOJ 11654
  • BOJ 5218
  • 풀어볼 문제

Was this helpful?

  1. 4주차

아스키 코드

Previous멤버 연산자NextEOF

Last updated 4 years ago

Was this helpful?

아스키 코드

아스키 코드

컴퓨터는 0과 1로만 이루어져 있는 진법인 이진법으로만 읽을 수 있다는 것을 알고 계시나요? 그래서 컴퓨터에서는 우리가 문자를 입력해도 전부 이진법으로 변환되어 정보를 받는다고 합니다. 아스키 코드는 문자에 번호를 부여해 컴퓨터가 처리하기 쉽게 만든 부호입니다. 아스키 코드는 0번부터 127번까지 총 128개의 문자가 저장되어 있습니다.

ASCII의 풀 네임은 America Standard Code for Information Interchange로 미국에서 만든 표준 부호입니다. 아스키 코드 테이블에 여러가지 문자들이 있지만 우리는 보통 대소문자 영어 알파벳과 숫자만 사용하는 편이라 알파벳과 숫자만 참고해서 확인하시면 됩니다.

아스키 코드 파트에서 우리는 딱 두 개의 함수만 기억하면 됩니다. ord()는 문자를 아스키 코드 번호로 변환해주는 함수이고, chr()은 아스키 코드 번호를 문자로 변환해주는 함수입니다. 우리는 이미 2주차 ~ 3주차에서 문제를 풀 때 사용했었습니다.

print(ord('a')) #97
print(ord('z')) #122

print(ord('A')) #65
print(ord('Z')) #90

print(ord('0')) #48
print(ord('9')) #57
print(chr(97)) #a
print(chr(122)) #z

print(chr(65)) #A
print(chr(90)) #Z

print(chr(48)) #0
print(chr(57)) #9

아스키 코드 번호들은 따로 외울 필요가 없습니다. 위와 같이 ord()만 기억하고 있어도 번호를 다 찾을 수 있기 때문에 아스키 코드를 사용할 문제가 나타나면 ord('a'), ord('A')를 통해 아스키 코드 번호를 찾아주면 됩니다.

연습문제

BOJ 11654

단순히 아스키 코드 번호를 출력하라는 문제입니다. ord()함수를 이용하여 출력을 해주면 됩니다.

n = input()
print(ord(n))

BOJ 5218

대문자 입력 값이 들어오는데, A부터 Z의 값을 1부터 26까지 숫자를 할당하여 알파벳 거리를 구하라고 합니다.

일단 입력 값을 받는 코드를 작성합시다.

t = int(input())
for i in range(t):
    a, b = input().split()

그리고 문자열에서 글자 하나하나 살펴봐야하므로 for문과 len을 이용하여 for문을 하나 더 작성해봅시다.

t = int(input())
for i in range(t):
    a, b = input().split()
    for j in range(len(a)): #단어의 길이가 같아서 len(b)도 상관없음
        blah blah

이제 문자를 하나하나 비교해봐야 하는데요. 우리는 A의 아스키 코드가 65이고, Z의 아스키코드가 90인 것을 알고 있습니다. 그러므로 ord(문자) - 64를 해주면 알파벳 대문자들이 1부터 26까지 매칭될 수 있다는 것을 확인할 수 있습니다.

거리를 구할 때는 y값이 크면 (y+26) - x인 점을 주의해서 값을 알파벳 값을 구해주면 됩니다.

t = int(input())
for i in range(t):
    a, b = input().split()
    
    ans = [] #알파벳 거리 저장
    for j in range(len(a)):
        x = ord(a[j]) - 64
        y = ord(b[j]) - 64
        if y >= x: z = y - x
        else: z = y + 26 - x
        ans.append(z)

이제 출력은 format과 join을 이용하여 값 사이에 공백을 넣어서 출력하면 되겠네요.

t = int(input())
for i in range(t):
    a, b = input().split()

    ans = []
    for j in range(len(a)):
        x = ord(a[j]) - 64
        y = ord(b[j]) - 64
        if y >= x: z = y - x
        else: z = y + 26 - x
        ans.append(z)
    print('Distances: {}'.format(' '.join(map(str, ans))))

풀어볼 문제

https://www.acmicpc.net/problem/15813
https://www.acmicpc.net/problem/3059
https://www.acmicpc.net/problem/1157
11654번: 아스키 코드Baekjoon Online Judge
5218번: 알파벳 거리Baekjoon Online Judge
Logo
Logo