Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 보이는 학생
- 최대 길이
- 임시반장 정하기
- 투 포인터
- 공통원소 구하기
- 10991
- 아스키코드
- Two Pointer
- 격자판
- array
- 배열
- 누적 계산
- ArrayList
- Pointer
- java
- 10992
- 등수구하기
- 알고리즘
- 자바
- 백준
- GitHub #Commit #BaekJoon
- 가장 짧은 문자거리
- 큰 수 출력하기
- 뒤집은 소수
- 코테준비
- 두 배열 합치기
- 연속부분수열
- 모든행과열대각선의합
- 점수계산
- 인프런
Archives
- Today
- Total
ezhoon
[인프런] 01-03 문장 속에서 가장 긴 단어를 출력하기 본문
문제
- 한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하기
- 문장속의 각 단어는 공백으로 구분
⚠️ 주의사항
- 공백으로 구분 할 것
- 가장 긴 단어를 출력하지만 같은 길이의 단어가 여러개일 경우 가장 앞쪽에 위치한 단어를 답으로 한다
문제풀이
1. BufferedReader + StringTokenizer + StringBuilder
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public String solution(String str) {
int m = 0;
String answer = "";
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(str, " "); // 넘어온 str을 공백 기준으로 구분해줌
while (st.hasMoreTokens()) { // 모든 토큰을 반복
String x = st.nextToken(); // 구분한 토큰을 저장
int len = x.length(); // 토큰의 길이값 저장 study => 5
if (len > m) { // 같다로 할 경우 뒤에 같은 길이의 단어가 있으면 그 단어로 바뀌어서 >=이 아닌 >이여야만한다.
m = len;
answer = x;
}
}
sb.append(answer);
return sb.toString(); // 배열이 아닌 String으로 변환 후 return
}
public static void main(String[] args) throws IOException {
Main t = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(t.solution(str));
}
}
2. Scanner
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));
}
}
3. Scanner + indexOf
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));
}
}
- BufferedReader + StringTokenizer + StringBuilder
- Scanner + indexOf
- Scanner
결과를 보면 알 수 있듯이 BufferedReader 로 받아서 출력하는게 Memory, Time 모두 승리했다. 현재는 속도 및 메모리에는 신경을 안쓰고 코딩 하고 있지만 속도나 메모리 제한이 있는 문제들은 꼭 BufferedReader를 사용해야 할 것 같다.
'[Java] 인프런 문제풀이 > Stirng(문자열)' 카테고리의 다른 글
[인프런] 01-06 중복문자제거 (0) | 2022.01.17 |
---|---|
[인프런] 01-05 특정 문자 뒤집기 (0) | 2022.01.16 |
[인프런] 01-04 단어 뒤집 (0) | 2022.01.16 |
[인프런] 01-02 대소문자 변환 (0) | 2022.01.15 |
[인프런] 01-01 문자열 안의 원하는 문자 찾기 (0) | 2022.01.14 |
Comments