반응형
주어진 문자열 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"
이 코드는 다음과 같은 단계로 작동합니다:
- 입력된 문자열 s를 공백(" ")을 기준으로 분리하여 각 단어를 추출합니다.
- 리스트 컴프리헨션을 사용하여 각 단어를 뒤집습니다. 이때, 문자열 슬라이싱(word[::-1])을 활용하여 단어를 뒤집습니다.
- 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"
}
}
이 코드는 다음과 같은 단계로 작동합니다:
- 입력된 문자열 s를 split(" ") 메소드를 사용하여 공백으로 분리하고, 결과를 문자열 배열에 저장합니다.
- StringBuilder를 사용하여 최종적으로 반환될 문자열을 구성합니다.
- 각 단어에 대하여, 또 다른 StringBuilder 인스턴스를 생성하고, reverse() 메소드를 호출하여 단어를 뒤집습니다.
- 뒤집힌 단어를 최종 문자열을 구성하는 StringBuilder에 추가합니다. 각 단어 사이에는 공백을 추가합니다.
- 모든 단어를 처리한 후, StringBuilder의 toString() 메소드를 호출하여 문자열로 변환하고, trim() 메소드를 사용하여 마지막에 추가된 공백을 제거합니다.
반응형
'IT > 알고리즘' 카테고리의 다른 글
[코딩 인터뷰] 배열에서 k번째로 큰 요소 찾기 (0) | 2024.03.28 |
---|---|
[코딩 인터뷰] 두 배열의 교집합 구하기 (0) | 2024.03.28 |
[Easy] 삽입 위치 구하기 (0) | 2017.12.14 |
[Easy] 정렬된 배열에서 중복 삭제하기 (0) | 2017.12.13 |
[Easy] 정렬된 두 링크드 리스트 합치기 (1) | 2017.12.13 |