본문 바로가기
IT/알고리즘

[코딩 인터뷰] 단어 단위로 문자열 뒤집기

by 네야나라 2024. 3. 28.
반응형

주어진 문자열 s는 여러 단어로 구성되어 있으며, 각 단어는 하나 이상의 공백 문자로 구분됩니다. 당신의 목표는 각 단어 내에서 문자의 순서를 뒤집되, 단어의 순서는 유지하는 새로운 문자열을 반환하는 함수를 작성하는 것입니다. 여기서 단어란 공백이 아닌 문자들의 연속된 시퀀스를 의미합니다.

입력:

  • s: 단어와 공백 문자로 구성된 문자열 (1 ≤ 문자열의 길이 ≤ 10,000)

출력:

  • 각 단어 내의 문자 순서가 뒤집힌 새로운 문자열

예시:

입력: "hello world"

출력: "olleh dlrow"

 

입력: "The quick brown fox jumps over the lazy dog"

출력: "ehT kciuq nworb xof spmuj revo eht yzal god"

 

더보기

Python

def reverse_words_in_string(s):
    # 문자열을 공백을 기준으로 분리하여 각 단어를 리스트로 변환
    words = s.split(" ")
    # 각 단어를 뒤집어서 새로운 리스트 생성
    reversed_words = [word[::-1] for word in words]
    # 뒤집힌 단어들을 공백으로 다시 연결
    reversed_string = " ".join(reversed_words)
    return reversed_string

# 예시 실행
print(reverse_words_in_string("hello world"))  # 출력: "olleh dlrow"
print(reverse_words_in_string("The quick brown fox jumps over the lazy dog"))  # 출력: "ehT kciuq nworb xof spmuj revo eht yzal god"

 

 

이 코드는 다음과 같은 단계로 작동합니다:

  1. 입력된 문자열 s를 공백(" ")을 기준으로 분리하여 각 단어를 추출합니다.
  2. 리스트 컴프리헨션을 사용하여 각 단어를 뒤집습니다. 이때, 문자열 슬라이싱(word[::-1])을 활용하여 단어를 뒤집습니다.
  3. join 메소드를 사용하여 뒤집힌 단어들을 공백으로 다시 연결하여 최종 문자열을 생성합니다.

 

 

JAVA

public class ReverseWords {
    public static String reverseWords(String s) {
        // 문자열을 공백으로 분리하여 단어 배열을 생성
        String[] words = s.split(" ");
        StringBuilder reversedString = new StringBuilder();

        // 각 단어를 뒤집어서 StringBuilder에 추가
        for (String word : words) {
            StringBuilder reverseWord = new StringBuilder(word);
            reverseWord.reverse(); // 단어를 뒤집는다

            // 뒤집힌 단어를 StringBuilder에 추가
            reversedString.append(reverseWord.toString());
            reversedString.append(" "); // 단어 사이에 공백 추가
        }

        // 마지막 공백을 제거하고 결과 문자열 반환
        return reversedString.toString().trim();
    }

    public static void main(String[] args) {
        String input1 = "hello world";
        System.out.println(reverseWords(input1)); // 출력: "olleh dlrow"

        String input2 = "The quick brown fox jumps over the lazy dog";
        System.out.println(reverseWords(input2)); // 출력: "ehT kciuq nworb xof spmuj revo eht yzal god"
    }
}

 

 

이 코드는 다음과 같은 단계로 작동합니다:

  1. 입력된 문자열 s를 split(" ") 메소드를 사용하여 공백으로 분리하고, 결과를 문자열 배열에 저장합니다.
  2. StringBuilder를 사용하여 최종적으로 반환될 문자열을 구성합니다.
  3. 각 단어에 대하여, 또 다른 StringBuilder 인스턴스를 생성하고, reverse() 메소드를 호출하여 단어를 뒤집습니다.
  4. 뒤집힌 단어를 최종 문자열을 구성하는 StringBuilder에 추가합니다. 각 단어 사이에는 공백을 추가합니다.
  5. 모든 단어를 처리한 후, StringBuilder의 toString() 메소드를 호출하여 문자열로 변환하고, trim() 메소드를 사용하여 마지막에 추가된 공백을 제거합니다.
반응형