본문 바로가기

Univ/Python Programming

[문제 13] 문자열 뒤집기와 대소문자 변경 - Python 풀이

주어진 문자열을 뒤집고 각 문자의 대소문자를 반대로 바꾸어 출력하는 프로그램을 작성한다. 문자열의 길이는 최대 100이다.

입력 예시

첫째 줄에 문자열이 주어진다.

출력 예시

문자열을 뒤집은 뒤 각 문자의 대소문자를 반대로 바꾼 결과를 출력한다.

예제 테스트케이스

예제 1

입력 예시
출력 예시
HelloWorld
DLROwOLLEh

예제 2

입력 예시
출력 예시
C++Programming
GNIMMARGORp++c

코드

S = input()

result = ""
for ch in S[::-1]:
    if ch.isupper():
        result += ch.lower()
    else:
        result += ch.upper()

print(result)

1. 코드 동작 설명

  • 문자열을 입력받는다.
  • 슬라이싱을 이용하여 문자열을 뒤집는다.
  • 뒤집힌 문자열을 한 글자씩 순회한다.
  • 각 문자의 대소문자를 확인하여 반대로 변환한다.
  • 변환된 문자를 누적하여 새로운 문자열을 생성한다.
  • 최종 결과를 출력한다.

2. 문법 설명

input()

S = input()
  • 문자열을 입력받는 함수
  • 사용 형태:
input()

슬라이싱

S[::-1]
  • 문자열을 뒤집는 방법
  • [시작:끝:간격]에서 간격을 -1로 설정
  • 사용 형태:
문자열[::-1]

반복문

for ch in S[::-1]:
  • 문자열의 각 문자를 하나씩 순회
  • 사용 형태:
for 변수 in iterable:

isupper()

ch.isupper()
  • 문자가 대문자인지 확인하는 함수
  • 사용 형태:
문자.isupper()

lower()

ch.lower()
  • 문자를 소문자로 변환
  • 사용 형태:
문자.lower()

upper()

ch.upper()
  • 문자를 대문자로 변환
  • 사용 형태:
문자.upper()

문자열 누적

result += ch.lower()
  • 문자열 뒤에 문자를 이어 붙임
  • 사용 형태:
문자열 += 값

출력

print(result)
  • 결과 문자열을 출력

3. 실수 포인트

슬라이싱 없이 순회

for ch in S:
  • 문자열이 뒤집히지 않음

대소문자 변환 반대로 작성

if ch.isupper():
    result += ch.upper()
  • 변환이 이루어지지 않음

= 대신 += 누락

result = ch.lower()
  • 이전 값이 사라져 누적되지 않음

출력 형식 오해

print(f"{result}")
  • 가능하지만 불필요한 표현

4. 핵심 정리

  • [::-1]로 문자열을 뒤집고, isupper()로 대소문자를 판단하여 변환한다.