첫 번째 풀이 (내 풀이)
public class Main {
public String solution(String str) {
String answer = "";
String[] arr = str.split(" ");
int maxLength = Integer.MIN_VALUE;
for (int i = 0; i < arr.length; i++) {
if (arr[i].length() > maxLength) maxLength = arr[i].length();
}
for (String s : arr) {
if (s.length() == maxLength) {
answer = s;
break; // 중복단어 있을 경우 맨 앞 단어 출력
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(T.solution(str));
}
}
두 번째 풀이
public class Main2 {
public String solution(String str) {
String answer = "";
int m = Integer.MIN_VALUE;
String[] s = str.split(" ");
for(String x : s) {
int len = x.length();
if (len > m) {
m = len;
answer = x;
}
}
return answer;
}
public static void main(String[] args) {
Main2 T = new Main2();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); // 1줄을 입력 받기 위해서는 nextLine() 사용
System.out.println(T.solution(str));
}
}
세 번째 풀이
흠 내가 이렇게 풀 수 있으면 좋겠넹.
public class Main3 {
public String solution(String str) {
String answer = "";
int m = Integer.MIN_VALUE, pos;
// indexOf 와 subString 사용하여 풀이
while ((pos = str.indexOf(' ')) != -1) {
String tmp = str.substring(0, pos); // pos 전까지
int len = tmp.length();
if (len > m) { // => 같다로 하면 뒤에서 나온 답을 답으로 할 수 있음. 이렇게 해야 앞쪽에서 발견된 단어가 답이 됨.
m = len;
answer = tmp;
}
str = str.substring(pos+1); // 위에서 판별한 단어는 제외하고 str에 저장하여 반복됨.
}
// 반복문의 마지막 단어는 뒤에 공백이 없어 반복문이 종료되어 길이 대조를 못함.
// 마지막 단어 체크
if(str.length() > m) answer = str;
return answer;
}
public static void main(String[] args) {
Main3 T = new Main3();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); // 1줄을 입력 받기 위해서는 nextLine() 사용
System.out.println(T.solution(str));
}
}
'알고리즘 > 인프런_자바코테강의' 카테고리의 다른 글
인프런 6. 중복 문자 제거 (Java) (0) | 2022.03.10 |
---|---|
인프런 5. 특정 문자 뒤집기 (Java) (0) | 2022.03.10 |
인프런 4. 단어뒤집기 (Java) (0) | 2022.03.10 |
인프런 2. 대소문자 변환 (Java) (0) | 2022.03.07 |
인프런 1. 문자찾기 (Java) (0) | 2022.03.07 |