반응형

문장 속 가장 긴 단어 찾기 (Java)

 

문장 속에서 가장 긴 단어를 찾는 알고리즘을 구현해보자. 
긴 단어를 찾으려면 해당 문장의 단어들을 쪼개어서 for 문을 사용하여 문자열을 비교하여 찾아내면 되는데 
방법은 크게 2가지가 있다. 
어떻게 문제를 풀던 메인 메소드는 아래와 같이 고정이다.


  
public static void main(String[] args) {
Main m = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(m.solution(str));
}

 

1. split 사용하기


  
public String solution(String str) {
String answer = "";
int max = Integer.MIN_VALUE;
String[] s = str.split(" ");
for(String x : s) {
int len = x.length(); // 단어 len 에 저장
if(len > max) { // 값을 비교
max = len; // 최대값 갱신
answer = x;
}
}
return answer;
}

 

2. indexOf() 와 subString() 사용하기


  
public String solution(String str) {
String answer = "";
int max = Integer.MIN_VALUE, pos;
// 첫번째로 발견되는 띄어쓰기 위치 반환 (발견하지 못하면 -1 반환해줌)
while((pos = str.indexOf(" ")) != -1) {
String tmp = str.substring(0, pos);
int len = tmp.length();
if(len > max) { // = 를 사용하면 뒤에서 동일한 길이의 단어 발견시 해당 단어로 변경됨
max = len;
answer = tmp;
}
str = str.substring(pos +1);
}
// 문장 내에서 마지막 단어에는 공백이 없어 위 while문을 타지 않기 때문에 아래 내용 추가
if(str.length() > max) answer = str;
return answer;
}

 

위 코드를 자바스크립트로 변환하여 문제를 풀 수도 있다. 

 

자바스크립트로 문제풀이


  
// 문장 속 단어 찾기(가장 긴 단어 찾기)
let str = 'it is time to study';
let answer = '';
// 1. split 사용
let max = Number.MIN_SAFE_INTEGER;
const arr = str.split(' ');
// console.log(arr);
for(let i=0 ; i<arr.length ; i++) {
let len = arr[i].length;
if(len > max) {
max = len;
answer = arr[i];
}
}
console.log(answer);
// 2. indexOf(), subString() 사용
let max = Number.MIN_SAFE_INTEGER, pos;
while((pos = str.indexOf(" ")) != -1) {
let tmp = str.substring(0, pos);
let len = tmp.length;
if(len > max) {
max = len;
answer = tmp;
}
str = str.substring(pos +1);
}
if(str.length > max) answer = str;
console.log(answer);

 

자바스크립트 또한 2가지 버전으로 문제풀이가 가능하니 코드를 참고하자.
주요 문제풀이들만 블로그에 정리할 예정이니 꾸준히 풀도록 하자.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기