인프런 3. 문장 속 단어 (Java)

2022. 3. 7. 21:25·알고리즘/인프런_자바코테강의

 

첫 번째 풀이 (내 풀이)

 

public class Main {

    public String solution(String str) {
        String answer = "";
        String[] arr =  str.split(" ");
        int maxLength = Integer.MIN_VALUE;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i].length() > maxLength) maxLength = arr[i].length();
        }
        for (String s : arr) {
            if (s.length() == maxLength) {
                answer = s;
                break; // 중복단어 있을 경우 맨 앞 단어 출력
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(T.solution(str));
    }
}

 

두 번째 풀이

 

public class Main2 {

    public String solution(String str) {
        String answer = "";
        int m = Integer.MIN_VALUE;
        String[] s = str.split(" ");
        for(String x : s) {
            int len = x.length();
            if (len > m) {
                m = len;
                answer = x;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        Main2 T = new Main2();
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine(); // 1줄을 입력 받기 위해서는 nextLine() 사용
        System.out.println(T.solution(str));
    }
}

 

세 번째 풀이

흠 내가 이렇게 풀 수 있으면 좋겠넹. 

public class Main3 {

    public String solution(String str) {
        String answer = "";
        int m = Integer.MIN_VALUE, pos;
        // indexOf 와 subString 사용하여 풀이
        while ((pos = str.indexOf(' '))  != -1) {
            String tmp = str.substring(0, pos); // pos 전까지
            int len = tmp.length();
            if (len > m) { // => 같다로 하면 뒤에서 나온 답을 답으로 할 수 있음. 이렇게 해야 앞쪽에서 발견된 단어가 답이 됨.
                m = len;
                answer = tmp;
            }
            str = str.substring(pos+1); // 위에서 판별한 단어는 제외하고 str에 저장하여 반복됨.
        }
        // 반복문의 마지막 단어는 뒤에 공백이 없어 반복문이 종료되어 길이 대조를 못함.
        // 마지막 단어 체크
        if(str.length() > m) answer = str;
        return answer;
    }

    public static void main(String[] args) {
        Main3 T = new Main3();
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine(); // 1줄을 입력 받기 위해서는 nextLine() 사용
        System.out.println(T.solution(str));
    }
}

'알고리즘 > 인프런_자바코테강의' 카테고리의 다른 글

인프런 6. 중복 문자 제거 (Java)  (0) 2022.03.10
인프런 5. 특정 문자 뒤집기 (Java)  (0) 2022.03.10
인프런 4. 단어뒤집기 (Java)  (0) 2022.03.10
인프런 2. 대소문자 변환 (Java)  (0) 2022.03.07
인프런 1. 문자찾기 (Java)  (0) 2022.03.07
'알고리즘/인프런_자바코테강의' 카테고리의 다른 글
  • 인프런 5. 특정 문자 뒤집기 (Java)
  • 인프런 4. 단어뒤집기 (Java)
  • 인프런 2. 대소문자 변환 (Java)
  • 인프런 1. 문자찾기 (Java)
고구마와 감자
고구마와 감자
Amor DevFati는 김연자-Amor Fati에 Development(개발)의 Dev 를 첨가하여 만든 이름
  • 고구마와 감자
    Amor DevFati(아모르 개발파티)
    고구마와 감자
  • 전체
    오늘
    어제
    • 분류 전체보기 (156)
      • Loopers 2기 (4)
      • 스프링 (5)
      • 알고리즘 (113)
        • 백준 (70)
        • 프로그래머스 (7)
        • 인프런_자바코테강의 (20)
        • 리트코드 (5)
        • 해커랭크 (0)
        • 코드업 (3)
        • 이것저것 (7)
      • 자바 (7)
      • GIT (0)
      • 파이썬 (1)
      • 개발이론 (4)
      • JPA (0)
      • 김영한 강의 (13)
        • 모든 개발자를 위한 HTTP 웹 기본 지식 (2)
        • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (6)
        • 스프링 핵심 원리 - 기본편 (5)
      • 일기 및 아무말 적기 (6)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    전투 드로이드 가격
    1247
    2857
    2921
    3059
    그대로출력하기2
    1598
    꼬리를 무는 숫자 나열
    10178
    고려대학교에는 공식 와인이 있다
    홀수일까 짝수일까
    조교는 새디스트야!!
    등장하지 않는 문자의 합
    5988
    백준
    더하기 3
    카이사르 암호
    14656
    4458
    16673
    남욱이의 닭장
    Mini Fantasy War
    할로윈의 사탕
    10409
    11966
    첫 글자를 대문자로
    스프링 핵심 원리
    2의 제곱인가
    11023
    5361
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고구마와 감자
인프런 3. 문장 속 단어 (Java)
상단으로

티스토리툴바