내 풀이
문자열을 두고 이를 아스키 코드로 출력하는 프로그램 작성
이것의 경우에는 아는 것이 없기에 풀 수 없었다.
결과: 틀림
정답
a = input()
print(ord(a))
이 내용의 경우에는 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='
이러한 것은 네트워크 전송, 파일 저장 등에 활용될 수 있다.
'Coding Test (코딩 테스트)' 카테고리의 다른 글
코딩테스트 16일차(2025.02.02) - 백준11720번(숫자의 합) (0) | 2025.02.02 |
---|---|
코딩테스트 15일차(2025.01.31) - 백준9086번(문자열) (0) | 2025.01.31 |
코딩테스트 15일차(2025.01.31) - 백준2743번(단어 길이 재기) (0) | 2025.01.31 |
코딩테스트 15일차(2025.01.31) - 백준27866번(문자와 문자열) (0) | 2025.01.31 |
코딩테스트 14일차(2025.01.30) - 백준1546번(평균) (0) | 2025.01.30 |