반응형
문장 속 가장 긴 단어 찾기 (Java)
문장 속에서 가장 긴 단어를 찾는 알고리즘을 구현해보자.
긴 단어를 찾으려면 해당 문장의 단어들을 쪼개어서 for 문을 사용하여 문자열을 비교하여 찾아내면 되는데
방법은 크게 2가지가 있다.
어떻게 문제를 풀던 메인 메소드는 아래와 같이 고정이다.
public static void main(String[] args) {
Main m = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(m.solution(str));
}
1. split 사용하기
public String solution(String str) {
String answer = "";
int max = Integer.MIN_VALUE;
String[] s = str.split(" ");
for(String x : s) {
int len = x.length(); // 단어 len 에 저장
if(len > max) { // 값을 비교
max = len; // 최대값 갱신
answer = x;
}
}
return answer;
}
2. indexOf() 와 subString() 사용하기
public String solution(String str) {
String answer = "";
int max = Integer.MIN_VALUE, pos;
// 첫번째로 발견되는 띄어쓰기 위치 반환 (발견하지 못하면 -1 반환해줌)
while((pos = str.indexOf(" ")) != -1) {
String tmp = str.substring(0, pos);
int len = tmp.length();
if(len > max) { // = 를 사용하면 뒤에서 동일한 길이의 단어 발견시 해당 단어로 변경됨
max = len;
answer = tmp;
}
str = str.substring(pos +1);
}
// 문장 내에서 마지막 단어에는 공백이 없어 위 while문을 타지 않기 때문에 아래 내용 추가
if(str.length() > max) answer = str;
return answer;
}
위 코드를 자바스크립트로 변환하여 문제를 풀 수도 있다.
자바스크립트로 문제풀이
// 문장 속 단어 찾기(가장 긴 단어 찾기)
let str = 'it is time to study';
let answer = '';
// 1. split 사용
let max = Number.MIN_SAFE_INTEGER;
const arr = str.split(' ');
// console.log(arr);
for(let i=0 ; i<arr.length ; i++) {
let len = arr[i].length;
if(len > max) {
max = len;
answer = arr[i];
}
}
console.log(answer);
// 2. indexOf(), subString() 사용
let max = Number.MIN_SAFE_INTEGER, pos;
while((pos = str.indexOf(" ")) != -1) {
let tmp = str.substring(0, pos);
let len = tmp.length;
if(len > max) {
max = len;
answer = tmp;
}
str = str.substring(pos +1);
}
if(str.length > max) answer = str;
console.log(answer);
자바스크립트 또한 2가지 버전으로 문제풀이가 가능하니 코드를 참고하자.
주요 문제풀이들만 블로그에 정리할 예정이니 꾸준히 풀도록 하자.
반응형
'Computer Science > 알고리즘' 카테고리의 다른 글
[알고리즘] 아스키코드를 사용한 문자열 변환 (Java) (0) | 2022.05.04 |
---|---|
[알고리즘] 문자열 : 문자열 찾기 (Java) (0) | 2022.05.03 |
최근댓글