본문 바로가기

파이썬(문제풀이)

파이썬 단어를 입력하면 거꾸로 출력

더보기

'거꾸로' 단어를 입력하면 '로꾸거'와 같이 입력된 단어를 뒤집어서 출력하는 파이썬 코드를 작성하기.

#1. 슬라이싱 (Slicing) 이용하기

가장 간단하고 파이썬스러운 방법이다. 파이썬의 슬라이싱 기능을 이용하면 문자열을 쉽게 뒤집을 수 있다. [::-1]은 문자열 전체를 역순으로 가져오라는 의미이.

def reverse_string_slicing(s):
  return s[::-1]
word = "거꾸로"
reversed_word = reverse_string_slicing(word)
print(f"원본 단어: {word}, 뒤집힌 단어: {reversed_word}")

코드 분석

  • def reverse_string_slicing(s):: reverse_string_slicing이라는 이름의 함수를 정의합니다. 이 함수는 s라는 매개변수(parameter)를 받습니다. 여기서 s는 뒤집으려는 문자열을 나타냅니다.
  • return s[::-1]: 이 부분이 핵심입니다. 파이썬의 슬라이싱(slicing) 기능을 사용해 문자열 s를 뒤집습니다.
    • s는 원본 문자열입니다.
    • [:]는 문자열의 전체 범위를 의미합니다.
    • [::-1]은 슬라이싱의 세 번째 인자인 **step(증감폭)**을 -1로 설정한 것입니다. 기본적으로 파이썬의 슬라이싱은 [시작 인덱스:끝 인덱스:step] 형식으로 작동합니다. step을 -1로 설정하면 문자열을 뒤에서부터 앞으로, 즉 역순으로 읽게 됩니다.
  • word = "거꾸로": word라는 변수에 "거꾸로"라는 문자열을 할당합니다.
  • reversed_word = reverse_string_slicing(word): reverse_string_slicing 함수를 호출하고, word 변수에 저장된 "거꾸로"를 함수의 인자(argument)로 전달합니다. 함수는 "거꾸로"를 뒤집은 "로꾸거"를 반환하고, 이 값은 reversed_word 변수에 저장됩니다.
  • print(f"원본 단어: {word}, 뒤집힌 단어: {reversed_word}"): 최종 결과를 출력합니다. 여기서 f-string(f"")을 사용해 문자열 포맷팅을 합니다. {} 안에 변수를 넣어 간편하게 값을 출력할 수 있습니다.

요약

이 코드는 파이썬의 강력한 기능 중 하나인 슬라이싱을 활용하여 문자열을 매우 간결하고 효율적으로 뒤집는 방법을 보여줍니다. 다른 프로그래밍 언어에서 반복문을 이용해 뒤집어야 하는 작업을 단 한 줄의 코드로 해결할 수 있다는 점이 특징입니다.


#2. 반복문 (Loop) 이용하기

for 루프를 사용해 한 글자씩 가져와서 새로운 문자열에 덧붙이는 방법이에요. 이 방법은 다른 언어에서도 흔히 사용되는 방식이라 이해하기 쉬워요.

def reverse_string_loop(s):
  reversed_s = ""
  for char in s:
    reversed_s = char + reversed_s
  return reversed_s
word = "파이썬"
reversed_word = reverse_string_loop(word)
print(f"원본 단어: {word}, 뒤집힌 단어: {reversed_word}")

코드 분석

  • def reverse_string_loop(s):
    • reverse_string_loop라는 이름의 함수를 정의합니다. 이 함수는 문자열 s를 매개변수로 받습니다.
  • reversed_s = ""
    • 뒤집힌 문자열을 저장할 빈 문자열 reversed_s를 초기화합니다.
  • for char in s:
    • for 반복문을 사용해 매개변수로 받은 문자열 s의 각 문자를 왼쪽에서 오른쪽으로 순서대로 char 변수에 할당합니다.
  • reversed_s = char + reversed_s
    • 이 부분이 핵심 로직입니다. 반복문을 통해 얻은 현재의 문자 char를 reversed_s의 맨 앞에 추가합니다.
    • 예를 들어, "파이썬"의 경우:
      1. **'파'**가 char에 들어오면 reversed_s는 **"파"**가 됩니다.
      2. **'이'**가 들어오면, '이'를 현재 reversed_s("파")의 앞에 붙여 **"이파"**가 됩니다.
      3. **'썬'**이 들어오면, '썬'을 현재 reversed_s("이파")의 앞에 붙여 **"썬이파"**가 됩니다.
    • 이 과정을 통해 원래 문자열의 문자들이 역순으로 쌓이게 됩니다.
  • return reversed_s
    • 반복문이 모두 끝난 후, 최종적으로 뒤집힌 문자열 reversed_s를 반환합니다.
  • word = "파이썬"
    • word라는 변수에 "파이썬" 문자열을 할당합니다.
  • reversed_word = reverse_string_loop(word)
    • reverse_string_loop 함수를 호출해 word에 저장된 "파이썬"을 뒤집습니다. 반환된 "썬이파"는 reversed_word 변수에 저장됩니다.
  • print(f"원본 단어: {word}, 뒤집힌 단어: {reversed_word}")
    • f-string을 사용해 원본 단어와 뒤집힌 단어를 출력합니다.

요약

이 코드는 새로운 빈 문자열을 만들고, 원본 문자열의 문자를 하나씩 가져와서 새로운 문자열의 맨 앞에 추가하는 방식으로 문자열을 뒤집습니다. 이 방법은 슬라이싱처럼 간결하지는 않지만, 문자열이 뒤집히는 과정을 단계별로 명확하게 보여주기 때문에 프로그래밍의 기본 원리를 이해하는 데 도움이 됩니다.


#3. reversed() 함수와 join() 함수 이용하기

파이썬의 내장 함수인 reversed()는 문자열을 **역순 이터레이터(iterator)**로 만들어준다. 이 이터레이터를 ''.join() 함수를 사용해 다시 문자열로 합치면 된다.

def reverse_string_join_reversed(s):
  """
  reversed()와 join()을 이용해 문자열을 뒤집는 함수
  """
  return ''.join(reversed(s))

word = "코딩"
reversed_word = reverse_string_join_reversed(word)
print(f"원본 단어: {word}, 뒤집힌 단어: {reversed_word}")

코드 분석

  • def reverse_string_join_reversed(s):
    • reverse_string_join_reversed라는 이름의 함수를 정의합니다. s는 뒤집으려는 문자열을 나타내는 매개변수입니다.
  • return ''.join(reversed(s))
    • 이 부분이 핵심입니다. 두 가지 함수가 중첩되어 사용되었습니다.
    • reversed(s): 이 내장 함수는 문자열 s를 입력받아 역순으로 순회 가능한(iterable) 객체를 반환합니다. 즉, '코딩'이라는 문자열에 reversed()를 적용하면 '딩', '코' 순서로 문자를 하나씩 꺼내올 수 있는 객체가 생성됩니다.
    • ''.join(...): 문자열 메서드인 join()은 인자로 전달받은 순회 가능한 객체의 각 요소를 특정 구분자('')로 연결하여 하나의 문자열로 합칩니다. 여기서는 구분자로 **빈 문자열('')**을 사용했기 때문에, reversed(s)에서 나오는 문자들('딩', '코')이 공백 없이 바로 연결되어 "딩코"라는 새로운 문자열이 만들어집니다.
  • word = "코딩"
    • word 변수에 "코딩" 문자열을 할당합니다.
  • reversed_word = reverse_string_join_reversed(word)
    • reverse_string_join_reversed 함수를 호출해 "코딩"을 뒤집습니다. 반환된 "딩코"는 reversed_word 변수에 저장됩니다.
  • print(f"원본 단어: {word}, 뒤집힌 단어: {reversed_word}")
    • f-string을 사용하여 원본 단어와 뒤집힌 단어를 출력합니다.

요약

이 코드는 reversed() 함수로 문자열의 순서를 뒤집고, 그 결과를 join() 함수로 다시 하나의 문자열로 합치는 과정을 거칩니다. 슬라이싱 방식만큼 간결하지는 않지만, 파이썬의 이터레이터(iterator) 개념을 활용한다는 점에서 유용하며, 문장 내의 단어를 뒤집는 등 더 복잡한 문자열 처리 작업에도 응용될 수 있습니다.