문제
설명
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.
입력
첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성되어 있습니다.
출력
첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한
코드
import java.util.Scanner;
public class Main1_3 {
// 문장 속 단어. 문장 속에서 가장 긴 단어 출력
// 1. split() 사용
public String Solution(String str) {
String answer ="";
int m = Integer.MIN_VALUE;
String[] s = str.split(" "); // 공백으로 분리해서 각 단어를 배열에 넣기
for(String x : s) {
//System.out.println(x);
int len = x.length();
if(len>m) {
m=len;
answer = x;
}
}
return answer;
}
public static void main(String[] args) {
Main1_3 T = new Main1_3();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(T.Solution(str));
}
}
import java.util.Scanner;
public class Main1_3 {
// 문장 속 단어. 문장 속에서 가장 긴 단어 출력
// 2. indexOf() + substring() 사용
public String Solution(String str) {
String answer ="";
int m = Integer.MIN_VALUE, pos;
while((pos=str.indexOf(' ')) != -1) {
String tmp = str.substring(0, pos);
int len = tmp.length();
if(len>m) {
m=len;
answer = tmp;
}
str = str.substring(pos+1); // 첫 번째 단어를 제외한 문장으로 while 작업 반복
}
if(str.length()>m) answer=str; // 마지막 단어는 공백이 없으니까 예외로 비교 및 처리
return answer;
}
public static void main(String[] args) {
Main1_3 T = new Main1_3();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(T.Solution(str));
}
}
결과
알게된 점
1. split()
https://rookie-programmer.tistory.com/9
2. indexOf()
https://rookie-programmer.tistory.com/10
3. substring()
https://rookie-programmer.tistory.com/11
'Algorithm > Inflearn' 카테고리의 다른 글
[Inflearn] 자바 알고리즘 문제풀이 #01-06 6. 중복문자제거 (0) | 2022.10.26 |
---|---|
[Inflearn] 자바 알고리즘 문제풀이 #01-05 5. 특정 문자 뒤집기 (0) | 2022.10.25 |
[Inflearn] 자바 알고리즘 문제풀이 #01-04 4. 단어 뒤집기 (0) | 2022.10.12 |
[Inflearn] 자바 알고리즘 문제풀이 #01-02 2. 대소문자 변환 (0) | 2022.10.04 |
[Inflearn] 자바 알고리즘 문제풀이 #01-01 1. 문자 찾기 (0) | 2022.10.04 |