본문 바로가기
자바 알고리즘

03. 문장 속 단어

by watergrace2u 2022. 4. 6.
반응형
SMALL

인프런 - 자바 알고리즘 문제 풀의 강의

# 방법 1 : str.split(" ") 사용하여 배열에 저장 후, 각 문자열 길이 비교

 

- Scanner에서 한 줄은 nextLine()으로 받는다.

 

- int max = Integer.MIN_VALUE를 하면, 정수의 최소값(-2^31)으로 설정된다.

 

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

=> 문자열을 띄어쓰기 단어로 나누어 배열에 저장한다.

 

import java.util.Scanner;
  
public class Main {
  
  public String solution(String str) {
    String answer = "";
    String [] arr = str.split(" ");
    int max = Integer.MIN_VALUE;
    for(String s: arr){
      int len = s.length();
      if(len>max){
       max = len;
       answer = s;
      }
    }
    return answer; 
  }
  
  public static void main(String[] args){
    Main T = new Main();
    Scanner kb=new Scanner(System.in);
    String str = kb.nextLine();
    System.out.print(T.solution(str));   
  }
}

 

# 방법 2. indexOf(), substring() 함수 사용

 

- str.indexOf(' ') => 특정 문자열의 위치를 찾아 반환해주는 함수

여기서는, ' '(공백)을 발견하면 해당 위치 인덱스를 리턴하고, 발견하지 못하면, -1을 리턴한다.

 

- str.substring(0,pos) => 0부터 (pos-1) 인덱스 위치까지 문자열을 잘라낸다.

그냥 substring(pos) 라고 쓰면, pos 부터 끝까지 잘라낸다.

 

import java.util.Scanner;
  
public class Main {
  
  public String solution(String str) {
    String answer = "";
    int max = Integer.MIN_VALUE,pos;
    
    // str에 띄어쓰기가 있는 동안 반복문 돌림
    // 더이상 띄어쓰기가 존재하지 않으면(마지막 단어) 반복문 탈출
    while((pos=str.indexOf(' '))!=-1){
      String tmp = str.substring(0,pos);
      int len = tmp.length();
      if(len>max) {
       max = len;
       answer = tmp;
      }
      
      // pos+1 번째부터 마지막까지 
      str = str.substring(pos+1);
    }
    // 꼭 마지막 단어까지 검사해줘야한다!
    if(str.length()>max) answer = str;
    
    return answer; 
  }
  
  public static void main(String[] args){
    Main T = new Main();
    Scanner kb=new Scanner(System.in);
    String str = kb.nextLine();
    System.out.print(T.solution(str));   
  }
}

 

반응형
LIST

'자바 알고리즘' 카테고리의 다른 글

06. 중복 문자 제거  (0) 2022.04.08
05. 특정 문자 뒤집기  (0) 2022.04.08
04. 단어 뒤집기  (0) 2022.04.06
02. 대소문자 변환  (0) 2022.03.31
01. 문자 찾기  (0) 2022.03.31

댓글