3. 문장 속 단어
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
*문장속의 각 단어는 공백으로 구분됩니다.
*가장 길이기 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한 단어를 답으로 한다.
*subString , split 의 차이점*
subString - index를 설정해서 문자열을 자를 수 있다.
split - 특정문자를 기준으로 문자열을 잘라 문자열배열에 넣어준다.
import java.util.Scanner;
public class Main {
public String solution(String sentence) {
String result = "";
String[] world = sentence.split(" ");
for (String x : world) {
if (result.length() < x.length()) {
result = x;
}
}
return result;
}
public static void main(String[] args) {
Main main = new Main();
Scanner sc = new Scanner(System.in);
String sentence = sc.nextLine();
System.out.println(main.solution(sentence));
}
}
subString, indexOf 사용해보기
indexOf 해당 문자가 몇번 째 index에 있는지 return . 없으면 -1
String result = "";
int position = 0;
// 공백이 없을 때 까지 실행
while ((position = sentence.indexOf(" ")) != -1) {
// 0 ~ position 까지
String world = sentence.substring(0, position);
if (world.length() > result.length()) {
result = world;
}
// position+1 부터 잘라서 sentence 초기화
sentence = sentence.substring(position + 1);
}
// 마지막 단어 즉 공백이 없을 경우도(while문을 빠져나온 상태) 확인 해준다.
if (sentence.length() > result.length()) result = sentence;
return result;
4. 단어 뒤집기
N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요.
Stack으로 해보려다가 for문이 많아져서 맘에 안들어서 변경...
1. StringBuilder 를 사용한 이후 ?
String 을 사용하면 작업을 할때 객체가 계속해서 만들어진다. (무거워짐)
String 계산이 많아지면 Builder를 사용한다.
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test1_04 {
public ArrayList<String> solution(int number, String[] stringArray) {
ArrayList<String> arrayList = new ArrayList<>();
for(String x : stringArray){
String tmp = new StringBuilder(x).reverse().toString();
arrayList.add(tmp);
}
return arrayList;
}
public static void main(String[] args) {
Test1_04 main = new Test1_04();
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
String[] str = new String[number];
for (int i = 0; i < str.length; i++) {
str[i] = sc.next();
}
for(String x : main.solution(number,str)){
System.out.println(x);
}
}
}
직접 바꾸기
1. 문자를 toCharArray() 를 이용하여 배열에 넣어주고 글자가 짝수/ 홀수 로 나누었을 때를 활용하였다.
짝수일 때는 길이 보다 작을 경우 앞에 있는 index(p) 와 뒤에있는 index(m) 을 서로 바꿔준다. ( tmp를 이용하여 미리 하나 담아두어야 이미 바뀐 문자가 들어가지 않는다)
import java.util.ArrayList;
import java.util.Scanner;
public class Test1_04 {
public ArrayList<String> solution(String[] stringArray) {
ArrayList<String> arrayList = new ArrayList<>();
for (String x : stringArray) {
char[] ch = x.toCharArray();
// 짝수일 때
int p = 0;
int m = ch.length - 1;
if (ch.length % 2 == 0) {
while (p < m) {
char tmp = ch[m];
ch[m] = ch[p];
ch[p] = tmp;
p++;
m--;
}
// 홀수일 때
} else {
System.out.println("여긴 들어와?");
while (p != m) {
char tmp = ch[m];
ch[m] = ch[p];
ch[p] = tmp;
p++;
m--;
}
}
arrayList.add(String.valueOf(ch));
}
return arrayList;
}
public static void main(String[] args) {
Test1_04 main = new Test1_04();
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
String[] str = new String[number];
for (int i = 0; i < str.length; i++) {
str[i] = sc.next();
}
for (String x : main.solution(str)) {
System.out.println(x);
}
}
}
'알고리즘' 카테고리의 다른 글
10월 14일 2문제 - Java (0) | 2021.10.14 |
---|---|
10월 13일 2문제 - Java (0) | 2021.10.13 |
10월 11일 2문제 - Java (0) | 2021.10.12 |
[프로그래머스] 하샤드 수 (0) | 2021.05.11 |
[프로그래머스] 핸드폰 번호 가리기 (0) | 2021.05.10 |