✅ 파이썬에서 문자열을 뒤집는 3가지 방법이 있다.
✅ 백준 문제(1251, 6438)로 실전 연습을 해본다.
📌 1. 문자열을 뒤집는 3가지 방법 📌
문자열을 거꾸로 출력하는 방법은 여러 가지가 있다.
이 글에서는 슬라이싱, reverse() 함수, sorted() 내장 함수를 사용한 방법을 소개한다.
🔹 1) 문자열 슬라이싱을 이용한 뒤집기
문자열 슬라이싱을 사용하면, 간단한 문법으로 문자열을 뒤집을 수 있다.
문법:
문자열[start:end:step]
• [::-1] → 전체 문자열을 뒤에서부터(-1) 한 글자씩 가져온다.
var = "abcde"
print(f"문자열 뒤집기: {var[::-1]}") # edcba
✅ 출력 결과
문자열 뒤집기: edcba
🔹 2) reverse() 함수를 사용한 방법 (리스트 변환 후 처리)
문자열은 불변(immutable) 자료형이므로, 리스트로 변환 후 reverse() 메서드를 적용해야 한다.
var = "abcde"
lst = list(var) # 문자열을 리스트로 변환
print(f"뒤집기 전: {lst}") # ['a', 'b', 'c', 'd', 'e']
lst.reverse() # 리스트 뒤집기
print(f"뒤집기 후: {lst}") # ['e', 'd', 'c', 'b', 'a']
# 다시 문자열로 변환
reversed_str = "".join(lst)
print(f"문자열 변환: {reversed_str}") # edcba
✅ 출력 결과
뒤집기 전: ['a', 'b', 'c', 'd', 'e']
뒤집기 후: ['e', 'd', 'c', 'b', 'a']
문자열 변환: edcba
🔹 3) sorted() 내장함수를 사용한 방법
sorted(iterable, reverse=True) 함수는 리스트로 변환되므로, 다시 문자열로 변환해야 한다.
var = "abcde"
srt = sorted(var, reverse=True) # 리스트로 반환
print(f"sorted 사용: {srt}") # ['e', 'd', 'c', 'b', 'a']
# 다시 문자열로 변환
sorted_str = "".join(srt)
print(f"sorted 문자열 변환: {sorted_str}") # edcba
✅ 출력 결과
sorted 사용: ['e', 'd', 'c', 'b', 'a']
sorted 문자열 변환: edcba
📌 실전 연습: 백준 6438번 (문자열 뒤집기) 📌
🔗 문제 링크: 백준 6438번 - Reverse
🔹 문제 설명
• 여러 개의 문자열을 입력받고, 각 줄을 거꾸로 출력하는 프로그램을 작성하세요.
• 첫 번째 줄에 테스트 케이스 개수(N) 가 주어집니다.
• 이후 N개의 줄에 최대 70자 문자열이 주어집니다.
• 각 줄의 문자열을 뒤집어 출력해야 합니다.
🔹 코드 구현
#테스트 사례 수 지정 정수 입력
no = int(input())
#최대 70자를 포함하는 단일 텍스트 줄 입력
lst = [input() for _ in range(0, no)]
#문제풀이, 주어진 텍스트의 방향을 변경
for i in range(0, len(lst)):
str = lst[i]
print(str[::-1]) #문자열 슬라이싱으로 처리
✅ 입출력 예시
입력:
3
hello
world
python
출력:
olleh
dlrow
nohtyp
📌 실전 연습: 백준 1251번 (문자열 나누고 뒤집기) 📌
🔗 문제 링크: 백준 1251번 - 단어 나누기
🔹 문제 설명
• 주어진 단어를 세 부분으로 나눈 뒤, 각각 뒤집고 합쳐서 가장 사전순으로 앞서는 단어를 출력하세요.
• 예를 들어 "arrested" 라는 단어가 주어졌다면,
• ar / rest / ed 로 나누고
• 각각 뒤집어서 ra / tser / de
• 합치면 "ratserde"
• 이렇게 가능한 모든 경우를 만들고, 가장 사전순으로 앞선 단어를 출력하면 됩니다.
🔹 코드 구현
#입력값 저장
inp = input()
#출력값 변수 선언
rtnList = []
# 단어를 3개로 나누는 모든 경우의 수를 탐색한다.
for i in range(1, len(inp)-1):
for j in range(i+1, len(inp)):
# 세 부분으로 나누고 각각 뒤집기한다.
fStr = inp[:i]
sStr = inp[i:j]
tStr = inp[j:]
#거꾸로 저장한다.
rtnList.append(fStr[::-1]+sStr[::-1]+tStr[::-1])
#결과 출력
print(min(rtnList))
✅ 입출력 예시
입력:
arrested
출력:
ratserde
✅ 정리 & 마무리
✅ 문자열을 뒤집는 3가지 방법
1️⃣ 슬라이싱 ([::-1]) - 가장 간단하고 빠른 방법이다.
2️⃣ 리스트 변환 후 reverse() 사용 - 원본 리스트 변경 가능.
3️⃣ sorted() 사용 - 리스트로 변환된다. (다시 문자열 변환 필요)
✅ 백준 문제로 실전 연습
📌 백준 6438번 → 여러 줄 입력받아 문자열 뒤집기
📌 백준 1251번 → 문자열을 세 부분으로 나눠 뒤집고 사전순 정렬
'코딩라이브러리 > 파이썬' 카테고리의 다른 글
파이썬 if문 조건 여러개 다중 처리 배열 비교 (with 백준 1330) (0) | 2024.05.21 |
---|---|
파이썬 문자열 formatter string (with 백준 2739) (0) | 2024.05.20 |
파이썬 정수, 실수 형변환 데이터형 확인 (0) | 2024.05.18 |
파이썬 소수점 반올림 올림 round()와 ceil() (with 백준 2033) (0) | 2024.05.17 |
파이썬 소수점 버림 trunc() floor() (with 백준 10869) (0) | 2024.05.15 |