티스토리 뷰

반응형

 

문제

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

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

 

입력

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

 

출력

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

 

 

 

예시 입력

it is time to study

예시 출력

study

 

 

 

 

 

문제 풀이

 

[첫번째 풀이]

import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.nextLine();

    String result = "";
    String[] arr = input.split(" ");

    for (String str : arr) {
      if (result.length() < str.length()) {
        result = str;
      }
    }
    System.out.println(result);
  }
}

(Time 173ms / Memory 27MB)

import java.util.Scanner;
  
public class Main {
  public String Solution(String input) {
    String result = "";
    String[] arr = input.split(" ");

    for (String str : arr) {
      if (result.length() < str.length()) {
        result = str;
      }
    }
    
    return result;
  }
  
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.nextLine();

    Main main = new Main();
    System.out.println(main.Solution(input));
  }
}

(Time 161ms / Memory 27MB)

 

[두번째 풀이]

import java.util.Scanner;
import java.util.StringTokenizer;
  
public class Main {
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.nextLine();

    String result = "";
    StringTokenizer tokenizer = new StringTokenizer(input);

    while (tokenizer.hasMoreTokens()) {
      String str = tokenizer.nextToken();

      if (result.length() < str.length()) {
        result = str;
      }
    }

    System.out.println(result);
    return ;
  }
}

(Time 152ms / Memory 27MB)

import java.util.Scanner;
import java.util.StringTokenizer;
  
public class Main {
  public String Solution(String input) {
    String result = "";
    StringTokenizer tokenizer = new StringTokenizer(input);

    while (tokenizer.hasMoreTokens()) {
      String str = tokenizer.nextToken();

      if (result.length() < str.length()) {
        result = str;
      }
    }

    return result;
  }
  
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.nextLine();

    String result = "";
    StringTokenizer tokenizer = new StringTokenizer(input);

    while (tokenizer.hasMoreTokens()) {
      String str = tokenizer.nextToken();

      if (result.length() < str.length()) {
        result = str;
      }
    }

    Main main = new Main();
    System.out.println(main.Solution(input));
  }
}

(Time 163ms / Memory 27MB)

 

[세번째 풀이]

import java.util.Scanner;
  
public class Main {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();
        String result = "";

        while (!input.isEmpty()) {
            String str = input;
            if (input.contains(" ")) {
            	str = str.substring(0, str.indexOf(" "));
            }

            if (result.length() < str.length()) {
            	result = str;
            }

            if (!input.contains(" ")) {
            	break;
            }

            input = input.substring(input.indexOf(" ") + 1);
        }

        System.out.println(result);
    }
}

(Time 147ms / Memory 27MB)

import java.util.Scanner;

public class Main {
  public String Solution(String input) {
    String result = "";

    while (!input.isEmpty()) {
      String str = input;
      if (input.contains(" ")) {
        str = str.substring(0, str.indexOf(" "));
      }

      if (result.length() < str.length()) {
        result = str;
      }

      if (!input.contains(" ")) {
        break;
      }

      input = input.substring(input.indexOf(" ") + 1);
    }

    return result;
  }
  
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.nextLine();

    Main main = new Main();
    System.out.println(main.Solution(input));
  }
}

(Time 164ms / Memory 27MB)

 

 

 

- 스페이스를 잡기 위해 " ", "\\s", "\\s+" 공백 정규식까지 다 넣어서 split 시켜봤는데 실패했다.

Scanner in = new Scanner(System.in);
String input = in.next();

String result = "";
String[] arr = input.split(" ");

for (String str : arr) {
    if (result.length() < str.length()) {
    	result = str;
    }
}
System.out.println(result);

- split에 문제가 있나해서 StringTokenizer를 사용해서 공백으로 구분자를 넣어 분리해보았는데 토큰의 길이를 잡기 못해 이 또한 아예 런타임 에러가 났다.

Scanner in = new Scanner(System.in);
String input = in.nextLine();

String result = "";
StringTokenizer tokenizer = new StringTokenizer(input);

while (tokenizer.hasMoreTokens()) {
    String str = tokenizer.nextToken();

    if (result.length() < str.length()) {
        result = str;
    }
}

System.out.println(result);

- 이유는 다른게 아니라 콘솔에서 아규먼트를 입력 받을 때 next()가 아닌 nextLine()으로 받아야하는데 계속 공백을 다음 아규먼트로 인식해서 생긴 문제였다.

- 백준 방식이나 프로그래머스 방식이나 시간 단축에 크게 영향은 없는 것 같다.

- 마지막으로 substring을 이용해서 세번째 풀이처럼 풀어봤다. 어째 substring을 이용한 방식이 코드 짜는데 제일 시간이 많이 걸렸다.

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함