백준에서 비슷한 문제를 찾아보려다가 실패했습니다.
제가 잘 모르는 부분이 많아 이 문제를 함께해보려 합니다.
1. for-each 문으로 풀기
import java.util.Scanner;
public class Main {
public String solution(String str) {
String answer = "";
int m = Integer.MIN_VALUE;
String[] arr = str.split(" ");
for (String x : arr) {
int len = x.length();
if (len > m) {
m = len;
answer = x;
}
}
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));
}
}
- Integer.MIN_VALUE 를 활용하여 정수의 최소값을 초기화할 수 있습니다.
- split을 이용하면 쉽게 공백으로 구분하여 단어를 배열에 넣을 수 있습니다.
2. while문으로 풀기
import java.util.Scanner;
public class Main {
public String solution(String str) {
String answer = "";
int m = Integer.MIN_VALUE, pos;
while((pos = str.indexOf(" "))!= -1) {
String temp = str.substring(0, pos);
int len = temp.length();
if (len > m) {
m = len;
answer = temp;
}
str = str.substring(pos + 1);
}
if (str.length() > m) {
answer = str;
}
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));
}
}
- 이 풀이에서는 split을 사용하지 않고 pos(position)으로 공백을 구분하고 있습니다.
- substring은 문자열에서 추출하고자 하는 부분을 추출할 수 있는 메서드입니다. str.substring(0, pos)인 경우 인덱스 0부터 공백까지의 문자열을 추출할 수 있습니다.
- 공백 다음의 마지막 문자열까지 돌기 위해 str.substring(pos + 1)을 해주었습니다.
- 이렇게 하면 1.과 마찬가지로 동일한 결과값이 도출됩니다.
'코테초보 코커두드' 카테고리의 다른 글
[코딩 초보의 탐구] 백준 2744번 : 대소문자 바꾸기 (자바 JAVA) (0) | 2024.04.09 |
---|---|
[코딩 초보의 탐구] 백준 10814번 : 나이순 정렬(자바)과 Comparator (0) | 2023.11.13 |
[코딩 초보의 탐구] 백준 4153번 : 직각삼각형 (자바) (0) | 2023.11.11 |
[코딩 초보의 탐구] 백준 2751번 : 수 정렬하기2 (자바) (0) | 2023.11.08 |
[코딩 초보의 탐구] 백준 2750번 : 수 정렬하기 (자바) (0) | 2023.11.08 |