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 |