반응형

문장 속 가장 긴 단어 찾기 (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
  • 카카오스토리 공유하기