String(스트링) 03. 문장 속 단어
* 사용 언어 : JAVA
* Inflearn의 자바(Java)알고리즘 문제풀이 : 코딩테스트 대비 강의내용 정리
1. 문제
주어진 한 문장에서 가장 긴 단어를 출력하기.
문장 속 각 단어는 공백으로 구분되고 문자는 영어로 제공됨
// 입력
It is time to study
// 출력
study
2. 풀이
(1)
먼저, 문자 길이의 값을 담을 변수 maxLe()ng을 최소값(Integer.MIN_VALUE)으로 초기화한다.
문장을 공백을 기준으로 구분하여 문자열 배열에 담는다.
foreach문을 사용하여 단어의 길이를 찾아 최대값을 담아 둔 변수 maxLeng과 비교하며
단어 길이가 긴 단어가 발견되면 길이 값은 변수에 담아두고 단어를 answer 변수에 담는다.
(2)
pos 변수에 indexOf() 함수를 사용하여 첫 번째 발견되는 공백의 인덱스 값을 담고
while 문을 사용하여 공백이 발견되지 않을 때 까지 코드를 반복한다.
공백값 전까지 단어를 substring() 함수를 사용하여 끊어주어 변수에 담아둔다.
변수의 길이를 구하여 길이를 비교하며 가장 긴 단어를 담도록 구현한다.
마지막 단어는 공백이 없어 거짓으로 반복문을 나가기 때문에 if 문을 사용하여 단어의 길이를 비교한다.
3. 코드
(1)
public class Main {
public String solution(String str) {
String answer = "";
int maxLeng = Integer.MIN_VALUE;
String[] strs = str.split(" ");
for (String x : strs) {
int leng = x.length();
if (leng > maxLeng) {
maxLeng = leng;
answer = x;
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
System.out.println(T.solution(str));
}
}
(2)
public class String03 {
public String solution(String str) {
String answer = "";
int max = Integer.MIN_VALUE;
int pos;
while ((pos = str.indexOf(" ")) != -1) {
String tempStr = str.substring(0, pos);
int len = tempStr.length();
if (len > max) {
max = len;
answer = tempStr;
}
str = str.substring(pos+1);
}
if (str.length() > max) {
max = str.length();
answer = str;
}
return answer;
}
public static void main(String[] args) {
String03 T = new String03();
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
System.out.println(T.solution(str));
}
}
4. Keword
- String
- split()
- indexOf()
- substring()
'Algorithm' 카테고리의 다른 글
[자바 알고리즘 문제풀이] String 05. 특정 문자 뒤집기 (0) | 2022.03.07 |
---|---|
[자바 알고리즘 문제풀이] String 04. 단어 뒤집기 (0) | 2022.03.06 |
[자바 알고리즘 문제풀이] String 02. 대소문자 변환 (0) | 2022.02.17 |
[자바 알고리즘 문제풀이] String 01. 문자 찾기 (0) | 2022.02.17 |
순환 Recursion, 재귀함수 알고리즘 (0) | 2021.11.09 |