String(문자열) - 3. 문장 속 단어

2023. 6. 30. 20:46·알고리즘/String(문자열)

1. 문장 속 단어

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

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

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

//입력
it is time to study

//출력
study

2 - 1. 내 풀이

한 줄(문장)을 입력받아야 하므로 nextLine()을 사용해야한다.

받은 문장을 띄어쓰기를 기준으로 토큰화 해줘야함. String 클래스의 split 메서드 사용

토큰화된 String 배열들을 0번째 인덱스 부터 크기 비교를 하여 가장 큰 값을 출력한다. (최댓값 구하는 알고리즘)

 

* 길이가 같은 건 앞쪽 단어를 출력하므로 최댓값 알고리즘에서 등호를 빼는 것이 중요

 

2 - 2. 내 코드

import java.util.Scanner;
import java.util.StringTokenizer;

public class String03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();

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

        String big = strArr[0];
        for (int i = 1; i < strArr.length; i++) {
            if(big.length() < strArr[i].length()) big = strArr[i];
        }
        System.out.println(big);
    }
}

 

3 - 1. 강의 풀이

강의에서는 첫번째로는 split, 두 번째로는 토큰화를 코드로 구현(split 메서드 사용x)해서 풀이함.

 

String 클래스의 indexOf() 메서드는 ()의 문자의 인덱스 번호를 반환하고 없다면 -1 을 반환한다.

String 클래스의 subString(num1, num2)는 num1부터 num2 - 1 까지의 String 타입 변수를 반환해준다.

String str1 = "happy world";
String str2 = str1.subString(0, 3) // 0 ~ 2 index 자르기
String str3 = str1.subString(3); //3번째 index 부터 끝까지 자르기
//str2 = "hap";
//str3 = "py world";

 

그리고 마지막 단어에 대한 대소비교도 따로 적어줘야함.

 

3 - 2. 강의 코드

import java.util.Scanner;

public class String03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        //풀이에 필요한 변수
        String answer ="";
        int max = 0, pos;

        while((pos = str.indexOf(" ")) != -1){ // 첫번째 pos 초기화 2번째 while 조건식
            String tmp = str.substring(0, pos);
            if(tmp.length() > max) { //tmp의 길이가 그전의 최댓값 보다 크면
                max = tmp.length();  //조건문 비교 대상 재정의
                answer = tmp;        //answer 재정의   
            }
            str = str.substring(pos + 1); //str 재 정의
        }
        if(str.length() > max ) answer = str; 
        //while문을 탈출할 때 맨 마지막 단어는 대소비교를 하지 않으니 따로 추가해준 것.

        System.out.println(answer);
    }
}

 

4. 얻어갈 점

1. 단어는 next(), 문장은 nextLine() 으로 받기

2. split 메서드

String str = "it is time to study";
String[] strArr = str.split(" "); // 빈칸(띄어쓰기)을 기준으로 분할(토큰 화)
//strArr[] = {"it", "is", "time", "to", "study"};

3.indexOf()

String str ="Woo Seok";
int n = str.indexOf("S");
// n = 4;

4. subString()

String str1 = "happy world";
String str2 = str1.subString(0, 3) // 0 ~ 2 index 자르기
String str3 = str1.subString(3); //3번째 index 부터 끝까지 자르기
//str2 = "hap";
//str3 = "py world";

5. 반복문 작성이 끝이 아님.

반복문이 탈출 될 때 어떤 상황일지 생각해보는 것도 중요.

'알고리즘 > String(문자열)' 카테고리의 다른 글

String(문자열) - 7. 회문 문자열  (0) 2023.07.20
String(문자열) - 6. 중복 문자 제거  (1) 2023.07.20
String(문자열) - 5. 특정 문자 뒤집기  (1) 2023.07.12
String(문자열) - 4. 단어 뒤집기  (1) 2023.07.06
String (문자열) - 문자 찾기, 대소문자 변환  (0) 2023.06.28
'알고리즘/String(문자열)' 카테고리의 다른 글
  • String(문자열) - 6. 중복 문자 제거
  • String(문자열) - 5. 특정 문자 뒤집기
  • String(문자열) - 4. 단어 뒤집기
  • String (문자열) - 문자 찾기, 대소문자 변환
koreaioi
koreaioi
  • koreaioi
    koreaioi
    koreaioi
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (157)
      • JAVA (2)
      • 알고리즘 (88)
        • 백준 (11)
        • String(문자열) (12)
        • Array(1, 2차원 배열) (13)
        • Two pointers, Sliding windo.. (6)
        • HashMap, TreeSet(해쉬, 정렬지원 S.. (5)
        • Stack, Queue(자료구조) (8)
        • Sorting and Searching(정렬, 이.. (10)
        • Recursive, Tree, Graph(DFS,.. (14)
        • DFS, BFS 활용 (6)
        • 다시 시작! (1)
        • 기초 수학 (1)
      • 일상 (22)
      • Github (1)
      • MSA 공부 (4)
      • 경제, 금융, 디지털, 시사 (3)
      • 라즈베리파이 (10)
      • 프로젝트에서 일어난 일 (15)
      • FrontEnd 공부 (9)
        • React (8)
      • Spring (2)
      • 기술 세미나 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
koreaioi
String(문자열) - 3. 문장 속 단어
상단으로

티스토리툴바