문제
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요. 문장속의 각 단어는 공백으로 구분됩니다.
▣ 입력설명
첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성 되어 있습니다.
▣ 출력설명
첫 줄에 가장 긴 단어를 출력한다. 가장 긴 단어가 여러개일 경우 문장속에가 가장 앞쪽에 위치한 단어를 답으로 합니다.
▣ 입력예제 1
it is time to study
▣ 출력예제 1
study
풀이
StringTokenizer로 풀면 간단하게 풀리는 문제인데 강사님이 다르게 푸는 여러 방법을 알려주셨다
- split() : 파리미터로 구분자를 입력받아서 문자열을 자른뒤 String 배열에 저장한다.
- indexOf() : 파라미터로 입력받은 값을 처음 발견한 인덱스를 반환한다. 발견못하면 -1을 반환한다.
- substring() : 문자열을 자르는 함수.
코드
1) StringTokenizer로 푸는 방법
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
String answer = "";
//가장 긴 단어 출력, 공백구분, 여러개면 맨앞꺼
StringTokenizer st = new StringTokenizer(s, " ");
while(st.hasMoreTokens()) {
String word = st.nextToken();
if(answer.length() < word.length()) answer = word;
}
System.out.print(answer);
}
}
2) split() 을 사용해서 푸는 방법 (비슷하다)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
String answer = "";
int m =Integer.MIN_VALUE;
String[] str = s.split(" ");
//가장 긴 단어 출력, 공백구분, 여러개면 맨앞꺼
for(String x : str) {
int len = x.length();
if(len > m) {
answer=x;
m = len;
}
}
System.out.print(answer);
}
}
3) indexOf(), substring()를 사용해서 푸는 방법
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
String answer = "";
int m =Integer.MIN_VALUE, pos;
//가장 긴 단어 출력, 공백구분, 여러개면 맨앞꺼
while((pos = s.indexOf(" ")) != -1) { //pos는 공백이 있는 인덱스
String tmp = s.substring(0, pos); //맨앞부터 공백까지 자른다.
int len = tmp.length();
if(len > m) {
m = len;
answer = tmp;
}
s = s.substring(pos+1); //체크한 단어 제거
}
//마지막 단어 처리
if(s.length() > m) answer = s;
System.out.print(answer);
}
}
주의!! 마지막에 잘려진 단어는 공백이 없어서 체크가 안되므로 처리를 따로 꼭 해줘야한다.
'PS(Java) > 인프런 강의 문제' 카테고리의 다른 글
[PS] 인프런 강의 - 문자열 5. 특정 문자 뒤집기 (0) | 2022.10.10 |
---|---|
[PS] 인프런 강의 - 문자열 4. 단어 뒤집기 (0) | 2022.10.10 |
[PS] 인프런 강의 - 문자열 2. 대소문자 변환 (0) | 2022.10.10 |
[PS] 인프런 강의 - 문자열 1. 문자 찾기 (0) | 2022.10.09 |
[PS] 인프런 강의 - DFS 12. 피자 배달 거리(삼성 SW역량평가 기출문제) (0) | 2022.10.08 |