[알고리즘 문제 풀이][파이썬] 백준 9093번: 단어 뒤집기

염지현·2022년 3월 16일
0

BOJ

목록 보기
1/22

백준 9093번 문제 링크: https://www.acmicpc.net/problem/9093

📑 문제 설명

문장이 주어졌을 때, 단어를 뒤집어서 출력하는 프로그램을 작성
(문장 전체가 뒤집어지지 않고 단어만!)
입력: 테스트 케이스 수, 테이트 케이스 수에 따른 문장
출력: 각 테스트 케이스에 대해 주어진 문장의 단어를 모두 뒤집어서 출력

💡 문제 해결 방법

띄어쓰기문장 끝 예외처리를 고려하여 코드를 작성했다.
temp_word list를 선언하여 띄어쓰기 전까지 단어만을 저장하였고,
띄어쓰기를 만나거나, 문장 끝(len 함수를 사용하여 문장 끝을 파악)에 도달했을 때
temp_word에 저장된 단어를 역순으로 result_word에 저장 후 반환하는 함수를 작성했다.
추가적으로 list에 저장되었기 때문에
'hello, world' -> ['d', 'l', 'r', 'o', ...] 식으로 출력된다.
따라서 나는 마지막에 리스트를 스트링으로 변환해주는 함수 join을 사용하였다.

💻 코드

def reverse_sentence(sentence):
    temp_word = list()
    result_word = list()

    for i in range(0, len(sentence)):
        if (sentence[i] != ' '):
            temp_word.append(sentence[i])

        elif (sentence[i] == ' '):
            for j in range(len(temp_word)-1, -1, -1):
                result_word.append(temp_word[j])
            result_word.append(' ')
            temp_word.clear()

        if (i == (len(sentence) - 1)):
            for j in range(len(temp_word)-1, -1, -1):
                result_word.append(temp_word[j])
            temp_word.clear()
    return result_word

if __name__ == '__main__':
    t = input()
    for i in range(int(t)):
        setence = input()
        result_word = "".join(reverse_sentence(setence))
        print(result_word)

💟 추가적으로 알게 된 점

  • 파이썬은 input()을 통해 입력을 받는다.
    • 입력은 항상 str으로 받기 때문에 필요에 따라 형변환 필요!
  • join()을 사용하여 list -> str로 변환 가능
  • if와 elif 묶여 있다... 잊지 마라...

0개의 댓글