Recent Posts
Link
250x250
오늘보다 더 나은 내일의 나에게_
자바 알고리즘 문제 풀이 String Q03_문장 속 단어 본문
728x90
설명
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.
입력
첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성되어 있습니다.
출력
첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한
단어를 답으로 합니다.
예시 입력1
예시 출력it is time to study study
코드
내가 입력한 코드
package String; import java.util.Scanner; public class Q03 { public String solution(String str) { String answer = ""; String[] arr = str.split(" "); int max = 0; for (int i = 0; i < arr.length; i++) { if(arr[i].length() > max) { max = arr[i].length(); answer = arr[i]; } } return answer; } public static void main(String[] args) { Q03 T = new Q03(); Scanner kb = new Scanner(System.in); String str = kb.nextLine(); System.out.println(T.solution(str)); } }
해설 코드import java.util.*; class Main { 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){ Main T = new Main(); Scanner kb = new Scanner(System.in); String str=kb.nextLine(); System.out.print(T.solution(str)); } }
import java.util.*; class Main { public String solution(String str){ String answer=""; int m=Integer.MIN_VALUE, pos; while((pos=str.indexOf(' '))!=-1){ String tmp=str.substring(0, pos); int len=tmp.length(); if(len>m){ m=len; answer=tmp; } str=str.substring(pos+1); } if(str.length()>m) 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)); } }
풀이 및 정리
- 문자열을 분리해야하므로 next()가 아닌 nextLine()메소드를 사용해야 공백을 포함해 입력받을 수 있다.
- 풀이에서 Integer.MIN_VALUE를 사용했는데 이것은 앞에있는 타입의 크기중 제일 작은 값을 반환해준다.
MIN_VALUE => 숫자타입의 래퍼클래스(Integer, Byte, Long, Short)를 사용해 사용한 타입의 제일 작은 수를 반환해준다.
MAX_VALUE => 위와 동일하고 제일 큰 수를 반환해준다.
indexOf( ) => 지정한 문자가 문자열에 몇번째에 있는지를 반환한다.(인덱스 0부터 시작해 반환, 반환 타입 int)
String str = "ABCDEF"; String idx = str.indexOf("D"); System.out.println(idx); // 3 출력
subString( ) => 시작범위 값과, 끝나는 범위의 값을 매개변수로 받는다. 시작범위부터 끝나는 범위의 값 전까지 반환해준다(끝나는 범위 값은 포함하지않음!!)
String str = "ABCDEF"; String sub = str.subString(0,3); System.out.println(sub); // ABC 출력
728x90
'ALGORITHM > inflearn_javaAlgorithm' 카테고리의 다른 글
자바 알고리즘 문제 풀이 String Q06_중복문자제거 (0) | 2022.01.26 |
---|---|
자바 알고리즘 문제 풀이 String Q05_특정 문자 뒤집기 (0) | 2022.01.25 |
자바 알고리즘 문제 풀이 String Q04_단어 뒤집기 (0) | 2022.01.23 |
자바 알고리즘 문제 풀이 String Q02_대소문자 변환 (0) | 2022.01.23 |
자바 알고리즘 문제 풀이 String Q01_문자 찾기 (0) | 2022.01.22 |
Comments