1. 문장 속 단어
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.
첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한 단어를 답으로한다.
//입력
it is time to study
//출력
study
2 - 1. 내 풀이
한 줄(문장)을 입력받아야 하므로 nextLine()을 사용해야한다.
받은 문장을 띄어쓰기를 기준으로 토큰화 해줘야함. String 클래스의 split 메서드 사용
토큰화된 String 배열들을 0번째 인덱스 부터 크기 비교를 하여 가장 큰 값을 출력한다. (최댓값 구하는 알고리즘)
* 길이가 같은 건 앞쪽 단어를 출력하므로 최댓값 알고리즘에서 등호를 빼는 것이 중요
2 - 2. 내 코드
import java.util.Scanner;
import java.util.StringTokenizer;
public class String03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String[] strArr = str.split(" ");
String big = strArr[0];
for (int i = 1; i < strArr.length; i++) {
if(big.length() < strArr[i].length()) big = strArr[i];
}
System.out.println(big);
}
}
3 - 1. 강의 풀이
강의에서는 첫번째로는 split, 두 번째로는 토큰화를 코드로 구현(split 메서드 사용x)해서 풀이함.
String 클래스의 indexOf() 메서드는 ()의 문자의 인덱스 번호를 반환하고 없다면 -1 을 반환한다.
String 클래스의 subString(num1, num2)는 num1부터 num2 - 1 까지의 String 타입 변수를 반환해준다.
String str1 = "happy world";
String str2 = str1.subString(0, 3) // 0 ~ 2 index 자르기
String str3 = str1.subString(3); //3번째 index 부터 끝까지 자르기
//str2 = "hap";
//str3 = "py world";
그리고 마지막 단어에 대한 대소비교도 따로 적어줘야함.
3 - 2. 강의 코드
import java.util.Scanner;
public class String03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
//풀이에 필요한 변수
String answer ="";
int max = 0, pos;
while((pos = str.indexOf(" ")) != -1){ // 첫번째 pos 초기화 2번째 while 조건식
String tmp = str.substring(0, pos);
if(tmp.length() > max) { //tmp의 길이가 그전의 최댓값 보다 크면
max = tmp.length(); //조건문 비교 대상 재정의
answer = tmp; //answer 재정의
}
str = str.substring(pos + 1); //str 재 정의
}
if(str.length() > max ) answer = str;
//while문을 탈출할 때 맨 마지막 단어는 대소비교를 하지 않으니 따로 추가해준 것.
System.out.println(answer);
}
}
4. 얻어갈 점
1. 단어는 next(), 문장은 nextLine() 으로 받기
2. split 메서드
String str = "it is time to study";
String[] strArr = str.split(" "); // 빈칸(띄어쓰기)을 기준으로 분할(토큰 화)
//strArr[] = {"it", "is", "time", "to", "study"};
3.indexOf()
String str ="Woo Seok";
int n = str.indexOf("S");
// n = 4;
4. subString()
String str1 = "happy world";
String str2 = str1.subString(0, 3) // 0 ~ 2 index 자르기
String str3 = str1.subString(3); //3번째 index 부터 끝까지 자르기
//str2 = "hap";
//str3 = "py world";
5. 반복문 작성이 끝이 아님.
반복문이 탈출 될 때 어떤 상황일지 생각해보는 것도 중요.
'알고리즘 > String(문자열)' 카테고리의 다른 글
String(문자열) - 7. 회문 문자열 (0) | 2023.07.20 |
---|---|
String(문자열) - 6. 중복 문자 제거 (1) | 2023.07.20 |
String(문자열) - 5. 특정 문자 뒤집기 (1) | 2023.07.12 |
String(문자열) - 4. 단어 뒤집기 (1) | 2023.07.06 |
String (문자열) - 문자 찾기, 대소문자 변환 (0) | 2023.06.28 |