Algorithm

[자바 알고리즘 문제풀이] String 03. 문장 속 단어

민뭉아치 2022. 3. 6. 00:32

String(스트링) 03. 문장 속 단어


* 사용 언어 : JAVA

* Inflearn의 자바(Java)알고리즘 문제풀이 : 코딩테스트 대비 강의내용 정리

 

1. 문제

주어진 한 문장에서 가장 긴 단어를 출력하기.
문장 속 각 단어는 공백으로 구분되고 문자는 영어로 제공됨
// 입력
It is time to study

// 출력
study

 

2. 풀이

(1)

먼저, 문자 길이의 값을 담을 변수 maxLe()ng을 최소값(Integer.MIN_VALUE)으로 초기화한다. 

문장을 공백을 기준으로 구분하여 문자열 배열에 담는다.

foreach문을 사용하여 단어의 길이를 찾아 최대값을 담아 둔 변수 maxLeng과 비교하며

단어 길이가 긴 단어가 발견되면 길이 값은 변수에 담아두고 단어를 answer 변수에 담는다.

 

(2)

pos 변수에 indexOf() 함수를 사용하여 첫 번째 발견되는 공백의 인덱스 값을 담고

while 문을 사용하여 공백이 발견되지 않을 때 까지 코드를 반복한다.

공백값 전까지 단어를 substring() 함수를 사용하여 끊어주어 변수에 담아둔다.

변수의 길이를 구하여 길이를 비교하며 가장 긴 단어를 담도록 구현한다. 

마지막 단어는 공백이 없어 거짓으로 반복문을 나가기 때문에 if 문을 사용하여 단어의 길이를 비교한다.

 

3. 코드 

(1) 

public class Main {
    public String solution(String str) {
        String answer = "";
        int maxLeng = Integer.MIN_VALUE;
        
        String[] strs = str.split(" ");
        for (String x : strs) {
        	int leng = x.length();
            if (leng > maxLeng) {
            	maxLeng = leng;
                answer = x;
            }
        }

        return answer;
    }

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

(2)

 

public class String03 {
    public String solution(String str) {
        String answer = "";
        int max = Integer.MIN_VALUE;
        int pos;
        while ((pos = str.indexOf(" ")) != -1) {
            String tempStr = str.substring(0, pos);
            int len = tempStr.length();
            if (len > max) {
                max = len;
                answer = tempStr;
            }
            str = str.substring(pos+1);
        }
        if (str.length() > max) {
            max = str.length();
            answer = str;
        }

        return answer;
    }

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

 

4. Keword

  • String
    • split()
    • indexOf()
    • substring()
반응형