반응형
SMALL
# 방법 1 : str.split(" ") 사용하여 배열에 저장 후, 각 문자열 길이 비교
- Scanner에서 한 줄은 nextLine()으로 받는다.
- int max = Integer.MIN_VALUE를 하면, 정수의 최소값(-2^31)으로 설정된다.
- String [] arr = str.split(" ")
=> 문자열을 띄어쓰기 단어로 나누어 배열에 저장한다.
import java.util.Scanner;
public class Main {
public String solution(String str) {
String answer = "";
String [] arr = str.split(" ");
int max = Integer.MIN_VALUE;
for(String s: arr){
int len = s.length();
if(len>max){
max = len;
answer = s;
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb=new Scanner(System.in);
String str = kb.nextLine();
System.out.print(T.solution(str));
}
}
# 방법 2. indexOf(), substring() 함수 사용
- str.indexOf(' ') => 특정 문자열의 위치를 찾아 반환해주는 함수
여기서는, ' '(공백)을 발견하면 해당 위치 인덱스를 리턴하고, 발견하지 못하면, -1을 리턴한다.
- str.substring(0,pos) => 0부터 (pos-1) 인덱스 위치까지 문자열을 잘라낸다.
그냥 substring(pos) 라고 쓰면, pos 부터 끝까지 잘라낸다.
import java.util.Scanner;
public class Main {
public String solution(String str) {
String answer = "";
int max = Integer.MIN_VALUE,pos;
// str에 띄어쓰기가 있는 동안 반복문 돌림
// 더이상 띄어쓰기가 존재하지 않으면(마지막 단어) 반복문 탈출
while((pos=str.indexOf(' '))!=-1){
String tmp = str.substring(0,pos);
int len = tmp.length();
if(len>max) {
max = len;
answer = tmp;
}
// pos+1 번째부터 마지막까지
str = str.substring(pos+1);
}
// 꼭 마지막 단어까지 검사해줘야한다!
if(str.length()>max) answer = str;
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb=new Scanner(System.in);
String str = kb.nextLine();
System.out.print(T.solution(str));
}
}
반응형
LIST
'자바 알고리즘' 카테고리의 다른 글
06. 중복 문자 제거 (0) | 2022.04.08 |
---|---|
05. 특정 문자 뒤집기 (0) | 2022.04.08 |
04. 단어 뒤집기 (0) | 2022.04.06 |
02. 대소문자 변환 (0) | 2022.03.31 |
01. 문자 찾기 (0) | 2022.03.31 |
댓글