문장 속 단어

코코·2023년 7월 25일
0

기초 알고리즘

목록 보기
3/3
post-thumbnail

1. 설명

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

2. 입력

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

3. 출력

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

4. 예시

* 예시입력

it is time to travel

* 예시출력

travel

☆풀이☆

import java.util.Scanner;

public class Main {
    public String solution(String str) {
        String answer = "";
        int m = Integer.MIN_VALUE;
        String[] s = str.split(" ");
        for(String x : s) {
            int len = x.length();
            if(len > m) {
                m=len;
                answer=x;
            }
        }
        return answer;
    }

    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));
    }
}

for문 돌리는 과정이 이해가 되지 않아 직접 하나씩 값을 넣어서 비교해 보았다.
(입력 : it is time to travel)

  • for문을 돌 때 각각의 값(x 값, len 값, m 값, x 값 순)

  • m의 초기값은 -2147483648 이다.

    it, len=2, m=2, x="it"
    is, len=2, m=2, x="it"(len = 2, m = 2 if문 실행 안됨, 위와 값 동일함)
    time, len=4, m=4, x ="time"
    to, len=2, m=4, x ="time" (len = 2, m = 4 if문 실행 안됨, 위와 값 동일함)
    travel, len=6, m=4, x="travel"

  • 최종적으로 x="travel". answer로 할당되서 return된다.

☆다른 풀이☆

import java.util.Scanner;

public class Main {
    public String solution(String str) {
        String answer = "";
        int m = Integer.MIN_VALUE, pos;
        while ((pos = str.indexOf(' '))!=-1) {
            String tmp = str.substring(0, pos);
            int len = tmp.length();
            if(len > m) {
                m = len;
                answer = tmp;
            }
            str = str.substring(pos+1);
        }
        if(str.length()>m) answer=str;
        return answer;
    }

    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));
    }
}

위 풀이와 다르게 while문을 이용한 풀이인데 이것도 머리만으로는 이해가 되지 않아 노가다로 진행과정에 따른 값들을 일일히 찾아가며 따라가보았다.
(입력 : it is time to travel)

while문을 돌 때 각각의 값(str값, pos값, tmp값, len값, m값, answer값, str값)
  • str="it is time to travel", pos=2, tmp="it", len=2, m=2, answer="it", str = "is time to travel"
  • str = "is time to travel", pos=2, tmp="is", len=2, str="time to travel"
  • str="time to travel", pos=4, tmp="time", len=4, m=4, answer="time", str="to travel"
  • str="to travel", pos=2, tmp="to", len=2, str="travel"
  • str="travel", answer="travel"
profile
Just Do It

0개의 댓글