본문 바로가기
코테초보 코커두드

[코딩 초보의 탐구] 문장 속 단어 찾기 (자바 JAVA)

by 코커두드 2024. 4. 12.

 

 

백준에서 비슷한 문제를 찾아보려다가 실패했습니다.

제가 잘 모르는 부분이 많아 이 문제를 함께해보려 합니다.

 

1. for-each 문으로 풀기

import java.util.Scanner;

public class Main {
    public String solution(String str) {
        String answer = "";

        int m = Integer.MIN_VALUE;

        String[] arr = str.split(" ");

        for (String x : arr) {
            int len = x.length();
            if (len > m) {
                m = len;
                answer = x;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();

        Scanner sc = new Scanner(System.in);

        String str = sc.nextLine();
        System.out.println(T.solution(str));
    }
}

 

- Integer.MIN_VALUE 를 활용하여 정수의 최소값을 초기화할 수 있습니다.

- split을 이용하면 쉽게 공백으로 구분하여 단어를 배열에 넣을 수 있습니다.

 

2. while문으로 풀기

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 temp = str.substring(0, pos);
            int len = temp.length();
            if (len > m) {
                m = len;
                answer = temp;
            }
            str = str.substring(pos + 1);
        }

        if (str.length() > m) {
            answer = str;
        }

        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();

        Scanner sc = new Scanner(System.in);

        String str = sc.nextLine();
        System.out.println(T.solution(str));
    }
}

 

- 이 풀이에서는 split을 사용하지 않고 pos(position)으로 공백을 구분하고 있습니다.

- substring은 문자열에서 추출하고자 하는 부분을 추출할 수 있는 메서드입니다. str.substring(0, pos)인 경우 인덱스 0부터 공백까지의 문자열을 추출할 수 있습니다.

- 공백 다음의 마지막 문자열까지 돌기 위해 str.substring(pos + 1)을 해주었습니다.

- 이렇게 하면 1.과 마찬가지로 동일한 결과값이 도출됩니다.