대소문자 바꾸기
길이가 N인 영어로 이루어진 문자열 S가 주어진다. 이 문자열 S가 철자가 대문자라면 소문자로, 소문자라면 대문자로 바꿔서 출력하시오
ex)
>>> 6
>>> commit
COMMIT
>>> 10
>>> goormLevel
GOORMlEVEL
# 내 답변 코드
u = input()
r = ""
for i in input():
if i.islower():
r += i.upper()
else:
r += i.lower()
print (r)
i.upper / i.lower 함수에 대해서 처음 배웠다
변수를 조금 더 성의 있게 정의하도록 하자
해설
개념
- 입력 처리 - sys.stdin.readline()
- 문자열 메소드
input() 을 코딩테스트에서 사용하지 않는 이유?
input()
- 입력 받은 문자열을 문자 단위로 읽음
- 개행 문자를 삭제
- 문자를 문자열로 반환
-> 느리다
따라서 입력이 많은 문제에서는 사용자의 입력을 받은 버퍼를 만든 뒤, 그 버퍼에서 입력을 다시 읽어드림
sys.stdin.readline() 함수 이용
sys.stdin.readline()
- 개행 문자를 포함 (문자열을 자료형으로 저장)
- input().rstrip() 으로 개행 문자 제거
그래서 위에서 제가 사용한 input() 함수를 이런식으로 버퍼를 사용해서 바꿀 수 있습니다
>>> import sys
>>> input = sys.stdin.readline
>>> N = int(input())
>>> S = input().rstrip()
파이썬 대소문자 함수
str.islower() | 문자가 모두 소문자인지 판별 |
str.isupper() | 문자가 모두 대문자인지 판별 |
str.lower() | 문자열 모두 소문자로 치환 |
str.upper() | 문자열 모두 대문자로 치환 |
이런식으로 활용 가능
>>> import sys
>>> input = sys.stdin.readline
>>> N = int(input())
>>> S = input().rstrip()
# 결과 저장을 위한 변수
>>> result = ''
# 반복문을 이용해서 현재의 철자가 소문자라면 대문자로, 대문자라면 소문자로 치환하기
>>> for i in S:
>>> if i.islower():
>>> result += i.upper()
>>> elif i.isupper():
>>> result += i.lower()
>>> print(result)
파이썬 문자열 변경 함수
str.replace() | 기존의 문자열 변경 |
str.swapcase() | 문자가 소문자면 대문자로, 대문자면 소문자로 변경 |
swapcase()를 이용하여 코드를 매우 간단하게 변형 가능
>>> import sys
>>> input = sys.stdin.readline
>>> N = int(input())
>>> S = input().rstrip()
# swapcase()는 문자열의 대문자를 소문자로, 소문자를 대문자로 치환해준다.
>>> print(S.swapcase())
'코딩테스트' 카테고리의 다른 글
02 기초 수학과 구현 - 소수 찾기 (0) | 2023.09.09 |
---|---|
02 기초 수학과 구현 - 8진수 계산기 (0) | 2023.09.09 |
02 기초 수학과 구현 - 최장 맨해튼 거리 (0) | 2023.09.09 |
01 기초적인 문자열 구현 - 큰 수식 찾기 (0) | 2023.09.08 |
01 기초적인 문자열 구현 - 단어 필터 (5) | 2023.09.08 |