반응형
간단한 문장 속 단어 알고리즘을 풀어보겠습니다.
문장 속 가장 긴 단어를 출력하는 프로그램이고, 가장 길이가 긴 단어가 여러개일 경우 문장 속에서 가장 앞쪽에 위치한 단어를 답으로 합니다. 각 단어는 공백으로 구분됩니다.
입력 예시
it is time to go
출력 예시
time
package com.example.testproject;
import java.util.Scanner;
class Main{
public String solution(String str){
String answer = "";
int m = Integer.MIN_VALUE, pos; //가장 작은 값으로 초기화
/* 1. split을 쓰는 방법
String[] s = str.split(" ");
for(String x : s){
int len = x.length();
if(len > m){
m = len;
answer = x;
}
}
*/
//2. indexOf()와 substring()을 사용하는 방법
while((pos=str.indexOf(" ")) != -1){ // 띄어쓰기가 없어질때까지
String tmp = str.substring(0, pos);
int len = tmp.length();
if(len > m){ //여기서 >= 를 쓰지 않는 이유는 같은 길이의 단어중 가장 앞에 있는걸로 해야해서.
m = len;
answer = tmp;
}
str = str.substring(pos + 1); //pos 인덱스 뒤부터 끝까지 잘라서 가져옴
}
if(str.length() > m) answer = str; //마지막 단어는 while문을 안타기 때문에 따로 처리
return answer;
}
public static void main(String[] args){
Main t = new Main(); //solution 함수를 static으로 선언한다면 굳이 인스턴스 만들 필요 없음
Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); //한 줄을 읽어들임
System.out.print(t.solution(str));
}
}
- indexOf() 함수 : 특정 문자열의 인덱스를 찾음
- substring(int startIndex) 함수 : startIndex부터 끝까지의 문자열을 리턴한다.
- substring(int startIndex, int endIndex) 함수 : startIndex(포함)부터 endIndex(불포함)까지의 문자열을 리턴한다.
반응형
'JAVA' 카테고리의 다른 글
대소문자 변환 알고리즘 (0) | 2024.05.20 |
---|---|
알고리즘 - 문자열 (0) | 2024.05.20 |
자바의 Stream Method (0) | 2023.09.12 |
getOrDefault 함수 (0) | 2023.09.11 |