jiisoo
지수로그
jiisoo
전체 방문자
오늘
어제

블로그 메뉴

  • home
  • Github
  • 알고리즘 문제풀이 저장소
  • 분류 전체보기 (80)
    • Java (1)
    • Spring (30)
    • JPA (15)
    • cs (8)
      • 디자인패턴 (1)
      • 네트워크 (5)
      • Database (1)
      • 운영체제 (1)
    • algorithm (18)
      • 알고리즘 & 자료구조 이론 (12)
      • 알고리즘 풀이 (6)
    • 면접 준비 (0)
    • 회고 (5)
      • ATDD (4)
      • 학습테스트로 배우는 spring 2기 (1)
      • 프로젝트 (0)

인기 글

최근 댓글

최근 글

태그

티스토리

hELLO · Designed By 정상우.
jiisoo

지수로그

algorithm/알고리즘 풀이

[알고리즘] 문장 속 단어

2022. 12. 27. 12:01
Q. 한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요. 문장속의 각 단어는 공백으로 구분됩니다.

 

- 입력 설명

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

 

- 출력 설명

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

 

- 입력 예제 1

it is time to study

 

- 출력예제 1

study

 

 

<나의 풀이>

public static String solution(String s) {
    String answer = "";
    int size = 0;

    String[] s1 = s.split(" ");
    for (String str : s1) {
        if (size < str.length()) {
            size = str.length();
            answer = str;
        }
    }
    return answer;
}

 

<다른 풀이>

public static String solution(String s) {
    String answer = "";
    int max = Integer.MIN_VALUE, pos;
    while ((pos = s.indexOf(' ')) != -1) {
        String tmp = s.substring(0, pos);
        int len = tmp.length();
        if (len > max) {
            max = len;
            answer = tmp;
        }
        s = s.substring(pos+1);
    }
    if (s.length() > max) {
        answer = s;
    }

    return answer;
}

 

 

<오늘 공부한 내용>

 - indexOf(String str)

 - indexOf(int ch) // 아스키 코드를 사용

 - indexOf(int ch, int startIndex)

 - indexOf(String str, int startIndex)

 

-  index.of("찾을 특정 문자", "시작위치")

  - 특정 문자나 문자열이 앞에서부터 처음 발견되는 인덱스를 반환한다.

  - 찾지 못했을 경우 "-1" 을 반환한다.

  - 시작할 위치는 생략이 가능하며, 생략 되었을 경우 0번째부터 찾기 시작한다.

 

예제 )

String str = "hello nice to meet you";
System.out.println(str.indexOf("h")); // 0
System.out.println(str.indexOf("w")); // -1
System.out.println(str.indexOf(104)); // 0
System.out.println(str.indexOf("m", 4)); // 14

 

 - lastIndexOf(String str)

 - lastIndexOf(int ch)

 - lastIndexOf(int ch, int fromIndex)

 - lastIndexOf(String str, int fromIndex)

  - 특정 문자나 문자열이 뒤에서부터 처음 발견되는 인덱스를 반환한다.

  - 찾지 못했을 경우 "-1" 을 반환한다.

 

String str = "hello nice to meet you";
System.out.println(str.lastIndexOf("e")); // 16
System.out.println(str.lastIndexOf("w")); // -1
System.out.println(str.lastIndexOf(104)); // 0
System.out.println(str.lastIndexOf("m", 4)); // -1
System.out.println(str.lastIndexOf("m", 16)); // 14

 

- 마지막 4,5 번째의 예제의 경우 처음부터 입력된 인덱스까지 범위 안에 입력된 문자열이 존재하는 여부를 따진다.

  - 따라서 4번 예제에서는 -1 을 반환하지만 16번째 까지 범위를 늘리면 14번째 위치에 "m" 이 존재하는 것을 알 수 있다.

 

'algorithm > 알고리즘 풀이' 카테고리의 다른 글

[알고리즘] 연속 부분수열  (0) 2023.01.05
[알고리즘] 최대 매출  (0) 2023.01.03
[알고리즘] 공통원소 구하기  (0) 2023.01.02
[알고리즘] 두 배열 합치기(two pointers algorithm)  (0) 2022.12.30
[알고리즘] 암호  (0) 2022.12.28
    'algorithm/알고리즘 풀이' 카테고리의 다른 글
    • [알고리즘] 최대 매출
    • [알고리즘] 공통원소 구하기
    • [알고리즘] 두 배열 합치기(two pointers algorithm)
    • [알고리즘] 암호
    jiisoo
    jiisoo

    티스토리툴바