📌 문제 설명
한 개의 문장이 주어지면, 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
- 단어는 공백으로 구분됩니다.
- 문장의 길이는 최대 100입니다.
- 문장은 영어 알파벳으로만 구성됩니다.
- 가장 긴 단어가 여러 개일 경우, 앞쪽에 위치한 단어를 출력합니다.
📝 입력 & 출력
🔹 입력
- 첫 번째 줄: 길이가 100을 넘지 않는 한 개의 문장 (영어 알파벳 + 공백 포함)
🔹 출력
- 첫 번째 줄: 가장 긴 단어 출력
🔸 예제 입력 1
it is time to study
🔸 예제 출력 1
study
💡 해결 방법
- 문장을 단어로 분리 (split(" ") 활용)
- 각 단어의 길이를 비교하여 최장 단어 찾기
- 길이가 같은 단어가 여러 개일 경우 앞에 나온 단어를 정답으로 선택
💻 코드 구현 (Java)
package partString;
import java.util.*;
public class Problem3 {
public String solution(String str) {
String answer = "";
int maxLength = Integer.MIN_VALUE;
String[] words = str.split(" "); // 공백 기준으로 단어 분리
for (String word : words) {
int len = word.length();
if (len > maxLength) {
maxLength = len;
answer = word;
}
}
return answer;
}
public static void main(String[] args) {
Problem3 T = new Problem3();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine(); // 문장 입력 (공백 포함)
System.out.print(T.solution(str));
kb.close();
}
}
📖 코드 설명
1️⃣ 문자열을 단어 배열로 변환
String[] words = str.split(" ");
- split(" ")을 사용하여 공백 기준으로 단어를 분리
2️⃣ 가장 긴 단어 찾기
for (String word : words) {
int len = word.length();
if (len > maxLength) {
maxLength = len;
answer = word;
}
}
- 모든 단어를 순회하며 최대 길이를 가진 단어를 찾음
- ✅ 여러 개의 단어가 같은 길이라도, 먼저 나온 단어가 정답이 됨
3️⃣ indexOf() + substring()을 활용한 대체 방법
int pos;
while ((pos = str.indexOf(' ')) != -1) { // 공백 위치 찾기
String tmp = str.substring(0, pos); // 첫 단어 추출
if (tmp.length() > maxLength) {
maxLength = tmp.length();
answer = tmp;
}
str = str.substring(pos + 1); // 나머지 문자열 갱신
}
if (str.length() > maxLength) answer = str; // 마지막 단어 처리
- 공백의 위치를 찾아 수동으로 단어를 분리
- 문장의 마지막 단어는 별도 처리 필요
🧐 while ((pos = str.indexOf(' ')) != -1) 설명
- indexOf(' ')는 문자열에서 첫 번째 공백의 위치(인덱스)를 반환
- pos = str.indexOf(' ')는 공백의 위치를 저장하면서 반환
- while (pos != -1)을 통해 더 이상 공백이 없을 때까지 반복
- str.substring(pos + 1)을 사용해 공백 이후의 문자열을 계속 갱신
- ✅ 공백을 하나씩 제거하며 단어를 추출하는 방식
⏳ 시간 복잡도 분석
- O(n) (n: 문장 길이)
- 문자열을 split() 한 후, 모든 단어를 한 번 순회하므로 선형 시간 복잡도를 가짐.
출처: 인프런 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 강의 | 김태원 - 인프런
김태원 | , 자바(Java) 알고리즘 문제풀이 채점사이트를 통해 기초부터 준비해보세요! 💪 [사진] 이 강의는 [사진] 자바(Java)로 코딩테스트 준비를 하고 계신 분께 추천드려요! 문제는 기초~ 중급
www.inflearn.com
'코딩테스트 > 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비' 카테고리의 다른 글
| 섹션 1. 문자열 - 6. 중복 문자 제거 (0) | 2025.03.18 |
|---|---|
| 섹션 1. 문자열 - 5. 특정 문자 뒤집기 (0) | 2025.03.18 |
| 섹션 1. 문자열 - 4. 단어 뒤집기 (0) | 2025.03.18 |
| 섹션 1. 문자열 - 2. 대소문자 변환 (0) | 2025.03.18 |
| 섹션 1. 문자열 - 1. 문자 찾기 (0) | 2025.03.18 |