[Algorithm] 문장 속 단어

19·2022년 10월 12일
0

Algorithm

목록 보기
14/28
post-custom-banner

문장 속 단어

설명

한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.

입력

첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성되어 있습니다.

출력

첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한 단어를 답으로 합니다.

예시 입력 1

it is time to study

예시 출력 1

study



해결

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class StringEx_3 {
    public String solution(String input) {
        String answer = "";
        int num = 0;
        int pos;

//        // split 사용
//        // 띄어쓰기 기준으로 문자열 분할
//        String[] s = input.split(" ");
//        for (String str : s) {
//            int length = str.length();
//            if (length > num) {
//                num = length;
//                answer = str;
//            }
//        }

        // indexOf 사용
        // 띄어쓰기가 있는 인덱스를 찾고, 기준으로 분할
        while ((pos = input.indexOf(" ")) != -1) {
            String tmp = input.substring(0, pos);
            int length = tmp.length();
            if (length > num) {
                num = length;
                answer = tmp;
            }
            // 문장 조정
            input = input.substring(pos+1);
        }
        // 마지막 단어
        if (input.length() > num) {
            answer = input;
        }
        return answer;
    }

    public static void main(String[] args) throws IOException {
        StringEx_3 T = new StringEx_3();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
        System.out.println(T.solution(input));
    }
}
  • split()을 사용한 방법과 indexOf()/substring()을 사용한 방법으로 문제를 해결했다.
  • split()을 통해 문장의 '띄어쓰기'를 기준으로 문자열을 분할해 문자열 배열에 넣었고, 배열을 순회하며 최대 길이의 문자열을 찾았다.
  • indexOf()를 사용해 문장의 '띄어쓰기'(공백)을 찾고, 기준삼아 substring()으로 문장을 분할했다.
    • 최대 길이의 문자열인지 여부를 체크하고 문장을 조절해가며 최대 길이의 문자열을 찾았다.
    • 주의할 점은 띄어쓰기 기준으로 문장을 분할했기 때문에, 마지막 단어는 체크되지 않는 것이었다. 따라서, while문을 벗어난 후에 마지막 단어 체크를 위해 if문을 추가로 작성해서 마지막 단어까지 체크했다.

split(), indexOf(), substring()을 사용 예시를 통해 직접 사용해보며 익숙해지는 시간을 가졌다.
좀 더 많은 연습을 통해 익숙해져야 함을 느꼈다..

profile
하나씩 차근차근
post-custom-banner

0개의 댓글