문제
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.
입력
출력
예시
//입력
it is time to study
//출력
study
코드
split 사용
class Main {
public static String solution(String str) {
String answer="";
int min = Integer.MIN_VALUE;
// 입력받은 문자열을 공백을 기준으로 나누어 배열을 만든다.
String[] strArr = str.split(" ");
// 각각의 단어의 길이가 최소값 보다 크면, 해당 값을 최소값으로 설정하고
해당 단어를 return할 변수에 담는다.
for (String x : strArr) {
int len = x.length();
if (len > min) {
min = len;
answer = x;
}
}
return answer;
};
public static void main(String[] args) {
// 스캐너 객체를 생성한다.
Scanner input = new Scanner(System.in);
// 문자열을 입력 받는다.
String str = input.nextLine();
// solution 메서드에 전달한다.
System.out.println(solution(str));
}
}
indexOf 사용
class Main {
public static String solution(String str) {
String answer="";
// min이라는 변수와 pos라는 변수를 동시에 선언한 것이고
// 그 중 min이라는 변수에는 상수값을 할당해 놓은 것.
int min = Integer.MIN_VALUE, pos;
// 전달 받은 String에서 공백의 인덱스를 가져온다.
// indexOf는 찾는 문자열이 없다면 -1을 리턴하므로 가져온 공백의 인덱스가 -1이 아니면
// 문자열에 공백이 있는 것을 의미한다.
// 그 다음 처음 부터 공백의 인덱스까지 문자열을 잘라서 해당 문자열의 길이를 할당해 놓는다.
// 그 다음 str을 기존의 공백 다음 부터 다시 잘라 다시 반복문으로 들어가서 같은 과정을 반복한다.
while( (pos = str.indexOf(" ")) != -1) {
String tmp = str.substring(0,pos);
int len = tmp.length();
if (len > min) {
min = len;
answer = tmp;
}
str = str.substring(pos+1);
}
return answer;
};
public static void main(String[] args) {
// 스캐너 객체를 생성한다.
Scanner input = new Scanner(System.in);
// 문자열을 입력 받는다.
String str = input.nextLine();
// solution 메서드에 전달한다.
System.out.println(solution(str));
}
}
사용한 메서드
split
// split은 입력받은 정규 표현식 또는 특정 문자를 기준으로 문자열을 나누어 배열을 리턴한다.
String str = "Good Morning Everyone"
String[] strarr = str.split(" ")
for ( String x : strarr ) {
System.out.println(x)
} // Good Morning Everyone 이 하나하나씩 출력
indexOf(String)
// indexOf()는 인자로 전달된 String의 index를 리턴한다.
원하는 String을 찾지 못하면 -1을 리턴한다.
String str = "hello world";
// 공백의 인덱스를 할당
int num = str.indexOf(" ");
System.out.println(num); // 5 출력
substring()
// substring 함수는 문자열을 원하는 위치에서 잘라야 할 때 사용할 수 있다.
// substring 함수는 인자를 하나를 받는 경우와, 2개를 받는 경우가 있다.
//인자를 하나를 전달하면 해당 인덱스부터 끝까지 문자열이 출력된다.
String str = "012345678";
str.substring(5) // 5678 출력
// 인자를 2개를 전달하면 가져올 문자열의 사작 인덱스 이상 부터 끝 인덱스 미만을 의미하게 된다.
String str = "012345678";
String cut = str.substring(3,6);
System.out.println(cut); // 345 출력