카테고리 없음
TIL_20250216
casylm
2025. 2. 16. 19:09
1. 자바 코딩 테스트
문자열
[문제] 문장 속 단어
더보기
설명
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.
입력
첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성되어 있습니다.
출력
첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한
단어를 답으로 합니다.
1. split() 방식
package org.example.infrenJavaCodingTest;
import java.util.Scanner;
public class chap2_3 {
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) {
chap2_3 T = new chap2_3();
Scanner kb = new Scanner(System.in);
// 한줄을 받아야 하므로, Line으로 받는다
String str = kb.nextLine();
System.out.println(T.solution(str));
}
}
* Scanner.nextLine(): next()는 개행문자를 무시하고 입력을 받고 nextLine은 한줄 단위로 입력을 받기 때문에 개행문자로 포함한다.
2. index of() 방식
package org.example.infrenJavaCodingTest;
import java.util.Scanner;
public class chap2_3 {
public String solution(String str) {
String answer ="";
int m = Integer.MIN_VALUE, pos;
// 띄어쓰기를 발견하면, -1 리턴
while((pos = str.indexOf(' '))!=-1){
// 0 부터 pos 전까지
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){
m=str.length();
answer=str;
}
return answer;
}
public static void main(String[] args) {
chap2_3 T = new chap2_3();
Scanner kb = new Scanner(System.in);
// 한줄을 받아야 하므로, Line으로 받는다
String str = kb.nextLine();
System.out.println(T.solution(str));
}
}
인프런 - 김영한
스프링 MVC 1편 - 섹션4 mvc 패턴 개요, 적용
mvc 패턴을 사용하는 이유
redirect 와 forward 방식
728x90