문장 속 단어

Seungmin Lim·2022년 2월 4일
0

코딩문제연습

목록 보기
3/63

문제

나의풀이

import java.util.*;

class Main {
	public String solution(String str) {
      	String answer = "";
      	
      	//split을 이용한 배열생성
      	int m = Integer.MIN_VALUE , pos;
      	String[] a = str.split(" ");
      	for(String x : a){
        	int len = x.length();
          	if(len > m){
            	m = len;
              	answer = x;
            }
        }
      	
      	//indexOf(),substring()을 이용한 탐색
      	while((pos = str.indexOf(' ')) != -1){
      		String tmp = str.substring(0,pos);
      		int len2 = tmp.length(); //현재배열길이
      		if(len2 > m) {
      			m = len2;
      			answer = tmp;
      		}
			str = str.substring(pos+1); //str을 tmp를 잘라냄.
      		
		}
      	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.println(T.solution(str));
	}
	
}

풀이방법

  1. .()split 메소드를 사용해 a배열에 각각 값을 담고, for each 구문으로 최댓값을 비교.
    if(len>m)
    m = len;
    answer= x;

    --> 즉, 현재 단어의 길이가 전 단어의 길이보다 길다면,
    m = 현재 단어의 길이가 되고
    answer는 현재 단어를 담는다.

  1. indexOf(' ')로 blank의 문장 처음으로 나오는 blank의 index를 저장하고, 그 index까지 substring을 이용해 tmp에 단어를 담는다.
    이후로는 1번과 같이 길이가 m 보다 크다면, m에 길이, answer에 tmp를 담는다.
    그리고, str을 tmp를 삭제하고 새로 만들어준다.
    마지막 단어는 공백이 없기때문에 따로 처리해줘야한다.

핵심키워드

마지막 단어 처리하기!
최댓값 구하는 로직 이해!

int len = x.length();
if(len>m)
m = len;
answer= x;

0개의 댓글