본문 바로가기
Coding Test (코딩 테스트)

코딩테스트 16일차(2025.02.02) - 백준11654번(아스키 코드)

by BioLearner 2025. 2. 2.
반응형

 

 풀이

문자열을 두고 이를 아스키 코드로 출력하는 프로그램 작성

 

이것의 경우에는 아는 것이 없기에 풀 수 없었다. 

결과: 틀림

정답

a = input()
 
print(ord(a))

 

 

(파이썬) 백준 알고리즘 11654번 아스키 코드

문제풀이 (Python) 123a = input() print (ord(a))cs키워드 (Keyword)키워드 ord() : 문자의 아스키 코드값을 리턴하는 함수이다.chr() : 아스키 코드값 입력으로 받아 그 코드에 해당하는 문자를 출력하는 함수이

j-remind.tistory.com

이 내용의 경우에는 ord함수라는 내장함수를 아는 것이 중요했다.

틀린 이유

아스키코드를 변환하는 것에 대해서 알지 못했다.

고찰

1. 아스키코드란 무엇인가?

컴퓨터가 문자를 저장하고 처리할 수 있도록 만든 표준 문자 인코딩 방식이다,

아스키 코드의 특징은 7비트(127)로 총 128개(2^7)이다. 

 

2. 이러한 이스키코드는 어디에서 사용되는가?

- 텍스트 파일 저장 및 처리

- 네트워크 및 프로토콜(HTTP, SMTP 등)

- 프로그래밍(문자의 숫자 변환, 정렬, 암호화)

- 데이터 전송 및 저장(파일 인코)

 

3. 아스키코드를 사용하여 유용하게 사용할 수 있는 문제는 무엇이 있을까? 이러한 것이 다른 것보다 유용한 경우는 있을까?

 

1) 문자와 숫자 변환 문제

- 아스키 코드의 연속적인 숫자 배치 특성을 이용하면, 문자와 숫자 간 변환이 쉽다.

- 예로 들어

0(아스키 코드 48) -> 9(아스키 코드 57) -> 숫자로 변환

def str_to_int(s):
    result = 0
    for char in s:
        result = result * 10 + (ord(char) - ord('0'))
    return result

print(str_to_int("1234"))  # 출력: 1234

 

윗 내용은 문자열 숫자를 정수형 숫자로 변환하는 코드다. 이 코드는 int를 사용하지 않아 메모리가 절약된다.

 

이러한 규칙성을 활용하면 별도의 문자열 피싱없이 빠르게 숫자로 변환할 수 있다. 

 

2) 대소문자 변환

아스키 코드에서 대문자와 소문자의 차이는 항상 32이기 때문에 이를 활용하면 대문자 소문자 변환도 메모리 절약을 할 수가 있다. 

def toggle_case(s):
    return ''.join(chr(ord(c) ^ 32) if 'A' <= c <= 'Z' or 'a' <= c <= 'z' else c for c in s)

print(toggle_case("Hello World!"))  # hELLO wORLD!

 

3) 비밀번호 생성 및 암호화 (단순 암호)

아스키 코드를 사용하면 간단한 암호화 및 난수 비밀번호를 생성할 수 있다.

def caesar_cipher(text, shift):
    return ''.join(chr((ord(c) - ord('A') + shift) % 26 + ord('A')) if 'A' <= c <= 'Z' else c for c in text)

print(caesar_cipher("HELLO", 3))  # KHOOR

 

4) 특수한 데이터 인코딩 및 압축 (비트 조작 활용)

아스키 코드를 사용하면, 데이터를 7비트 또는 8비트로 변환하여 특정한 압축 및 인코딩 방식(예: Base64)으로 변환할 수 있다.

import base64
text = "Hello"
encoded = base64.b64encode(text.encode())
print(encoded)  # b'SGVsbG8='

이러한 것은 네트워크 전송, 파일 저장 등에 활용될 수 있다.

 

 

반응형