알고리즘/알고리즘 정리
[문자열(String) 알고리즘] 3. 문장 속 단어
sjoo
2021. 7. 28. 23:11
3. 문장 속 단어
문장이 주어지면 문장에서 가장 긴 단어를 출력하려고 한다.
단. 가장 길이가 긴 단어가 여러개일 경우에는 문장속에서 가장 앞쪽에 위치한 단어를 출력한다.
※ next()는 개행문자를 무시하고 입력을 받고 nextLine은 한줄 단위로 입력을 받기 때문에 개행문자로 포함한다.
방법1. split 함수 사용해서 문자열 길이 비교
먼저 내가 작성한 코드이다.
배열 가장 첫번째 값을 변수에 담아서 문자열 길이를 비교한 후 길이가 더 긴 문자열을 tmp 변수에 담았다.
import java.util.*;
public class Main {
public static String solution(String str){
String answer="";
String[] arr = str.split(" ");
String tmp= arr[0];
for(int i=1; i<arr.length; i++){
if(tmp.length() < arr[i].length()) {
tmp=arr[i];
answer=tmp;
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
System.out.println(solution(str));
}
}
다음으로는 인강에서 푼 방식이다.
* Integer.MIN_VALUE : 정수의 최소값
Integer.MAX_VALUE : 정수의 최대값
import java.util.*;
public class Main {
public static String solution(String str){
String answer="";
String[] arr = str.split(" ");
int m=Integer.MIN_VALUE;
for(String x : arr){
int len=x.length();
if(len>m){
m=len;
answer=x;
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
System.out.println(solution(str));
}
}
방법2. indexOf()와 substring()을 사용해서 단어 구하기
* indexOf() : 특정 문자나 문자열이 앞에서부터 처음 발견되는 인덱스를 반환하며 만약 찾지 못했을 경우 "-1"을 반환
ex) String str = "apple";
int x = str.indexOf("a"); => 0을 출력
import java.util.*;
class Main {
public String solution(String str){
String answer="";
int m=Integer.MIN_VALUE, pos;
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);
}
if(str.length()>m) 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));
}
}
[인프런 학습 강의 사이트]
자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의
자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성
www.inflearn.com