Coding Planet
3. 문장 속 단어 찾기 - split(), indexOf(), subString() 본문
반응형
1. 문제 요구사항
- 한개의 영어 문장이 주어지면 그 문장 중 가장 긴 단어를 출력한다. 문장 속 각 단어는 공백으로 구분된다.
- 문자열의 길이는 100을 넘지 않는다. 가장 길이가 긴 단어가 여러개 일 경우 문장에서 가장 앞쪽인 단어를 출력한다.
2. 문제풀이에 사용된 메서드: 문자열-> 단어 배열
- 입력받은 문자열 str을 공백으로 구분하여 단어 배열로 저장하기 -> String [] s = str.split(" ");
- 반복문으로 문자열 배열 s를 돌면서 해당 단어의 길이를 구한다 -> int len=x.length();
- 배열을 돌면서 최대값을 뽑는 알고리즘을 활용한다(최대값 덮어쓰기) -> if(len>max) max=len;
- 최대값을 answer에 담는다
2. 문제풀이(2) : 문자열로만 찾기
- indexOf로 문자열을 돌면서 빈칸을 찾는다. indexOf는 찾는 문자열이 있으면 -1을 반환하므로 더이상 공백이 없을 때가지 문자열을 쭉~ 찾아보게 된다.
- 더이상의 공백이 없어 -1이 반환되면 while문은 자연스럽게 멈춘다.
- subString(0, pos) -> subString은 문자열을 잘라주는 메서드이다. 두번째 파라미터의 -1 인덱스까지 잘라낸다.
- subString(pos+1) -> pos+1 부터 문자열 끝까지 잘라내기. 이를 통해 반복문내 String tmp = str.substring(0, pos)가 다시 정상 적으로 작동한다.
- 단! (pos=str.indexOf(" ")) !=-1 조건에 의해 마지막 단어는 뒤에 공백이 없으므로 단어 길이에 상관 없이 false가 되어 while문이 종료된다.
- 따라서 return전에 마지막으로 직접 비교해준다. -> if(str.length()>max) answer=str;
3. 풀이
import java.util.Scanner;
public class Main {
public String solution(String str) {
String answer ="";
int max = Integer.MIN_VALUE;// 정수 최소값
String [] s = str.split(" "); // 공백으로 구분하여 잘라서 문자열 배열에 저장
for(String x : s) {
int len=x.length();
if(len>max) {
max=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.println(T.solution(str));
}
}
반응형
'🎁 코딩테스트 > 알고리즘' 카테고리의 다른 글
6. 중복문자제거 - indexOf(), charAt() / HashSet 으로 중복제거하기 (0) | 2023.05.04 |
---|---|
5. 특정 문자 뒤집기 - 문자의 알파벳 여부 구분하기 Character.isAlpahbetic() (0) | 2023.05.04 |
4. 단어 뒤집기 - StringBulider.reverse()/String.valueOf() / String과 StringBuilder의 차이점 (0) | 2023.05.04 |
2. 대문자/소문자 전환, 대문자/소문자 찾기 - Character.toUpperCase(), Character.isUpperCase() (0) | 2023.05.03 |
[String 문자열]1. 문자 찾기 - String.toCharArray() (0) | 2023.05.01 |
Comments