[ Java 코딩 테스트 ] 문장 속 단어 찾기

한대희·2024년 1월 12일
0

Java 코딩 테스트

목록 보기
4/11

문제

  • 한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.

  • 문장속의 각 단어는 공백으로 구분됩니다.

입력

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

출력

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

예시

//입력
it is time to study

//출력
study

코드

split 사용

class Main {

    public static String solution(String str) {
        String answer="";
        int min = Integer.MIN_VALUE;
        // 입력받은 문자열을 공백을 기준으로 나누어 배열을 만든다.
        String[] strArr = str.split(" ");
        // 각각의 단어의 길이가 최소값 보다 크면, 해당 값을 최소값으로 설정하고
           해당 단어를 return할 변수에 담는다.
        for (String x : strArr) {
            int len = x.length();
            if (len > min) {
                min = len;
                answer = x;
            }
        }
        return answer;

    };

    public static void main(String[] args) {
        // 스캐너 객체를 생성한다.
        Scanner input = new Scanner(System.in);
        // 문자열을 입력 받는다.
        String str = input.nextLine();
        // solution 메서드에 전달한다.
        System.out.println(solution(str));
    }
}

indexOf 사용

class Main {

    public static String solution(String str) {
        String answer="";
        // min이라는 변수와 pos라는 변수를 동시에 선언한 것이고
        // 그 중 min이라는 변수에는 상수값을 할당해 놓은 것.
        int min = Integer.MIN_VALUE, pos;
       // 전달 받은 String에서 공백의 인덱스를 가져온다.
       // indexOf는 찾는 문자열이 없다면 -1을 리턴하므로 가져온 공백의 인덱스가 -1이 아니면 
       // 문자열에 공백이 있는 것을 의미한다.
       // 그 다음 처음 부터 공백의 인덱스까지 문자열을 잘라서 해당 문자열의 길이를 할당해 놓는다.
       // 그 다음 str을 기존의 공백 다음 부터 다시 잘라 다시 반복문으로 들어가서 같은 과정을 반복한다. 
        while( (pos = str.indexOf(" ")) != -1) {
            String tmp = str.substring(0,pos);
            int len = tmp.length();
            if (len > min) {
                min = len;
                answer = tmp;
            }
            str = str.substring(pos+1);
        }
        
        return answer;

    };

    public static void main(String[] args) {


        // 스캐너 객체를 생성한다.
        Scanner input = new Scanner(System.in);
        // 문자열을 입력 받는다.
        String str = input.nextLine();
        // solution 메서드에 전달한다.
        System.out.println(solution(str));
    }
}

사용한 메서드

split

// split은 입력받은 정규 표현식 또는 특정 문자를 기준으로 문자열을 나누어 배열을 리턴한다.
String str = "Good Morning Everyone"
String[] strarr = str.split(" ")

for ( String x : strarr ) {
	System.out.println(x)
}  // Good  Morning  Everyone 이 하나하나씩 출력

indexOf(String)

// indexOf()는 인자로 전달된 String의 index를 리턴한다.
   원하는 String을 찾지 못하면 -1을 리턴한다.
  
  String str = "hello world";
  // 공백의 인덱스를 할당
  int num = str.indexOf(" ");
  System.out.println(num); // 5 출력

substring()

// substring 함수는 문자열을 원하는 위치에서 잘라야 할 때 사용할 수 있다.
// substring 함수는 인자를 하나를 받는 경우와, 2개를 받는 경우가 있다.

//인자를 하나를 전달하면 해당 인덱스부터 끝까지 문자열이 출력된다.

String str = "012345678";
str.substring(5) // 5678 출력


// 인자를 2개를 전달하면 가져올 문자열의 사작 인덱스 이상 부터 끝 인덱스 미만을 의미하게 된다.
 String str = "012345678";
 String cut = str.substring(3,6);
 System.out.println(cut); // 345 출력
profile
개발 블로그

0개의 댓글