본문 바로가기

코딩테스트

01 기초적인 문자열 구현 - 대소문자 바꾸기

대소문자 바꾸기

 

길이가 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())