문제
입력
i am a boy hahaha hohoho
출력
hahaha( 글자가 동일한 단어들이 있으면 앞에 단어 출력)
입력받은 문장을 arr에 담아야 하는데 이때 split(" ")을 통해서 구분지어 arr에 담아준다
즉 스페이스바 (띄어쓰기) 기준으로 담아주고
이를 향상된 for문에 담아서 뒤에 들어오는 값이 크면 a에 x 를 넣어주는 것이다.
이때 크기가 동일하면 우선 들어간 a 값이 그대로 a 에 유지되게 된다.
여기서 좀 해맸던 부분은 kb를 Scanner로 입력받고 str에 넣을때
next()로 넣어서 스페이스바 딱 한 단어만 들어가서 한참 고민했다!
한 줄을 통째로 받으려면 nextLine()을 받아야 한다!
import java.util.Scanner;
public class Main {
public String solution(String str) {
String answer = " ";
String arr[] = str.split(" ");
String a = "";
int cnt =1;
for(String x : arr) {
System.out.println(cnt+"번째"+"a의 길이"+a.length());
System.out.println(cnt+"번째"+"x의 길이"+x.length());
cnt++;
if(a.length()<x.length()) a=x;
}
answer=a;
return answer;
}
public static void main(String args[]) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(T.solution(str));
}
}
강사님 풀이 들으면서 필기하기!
int m 을 가장 작은값으로 초기화 시키는 코드.
-2의 31제곱으로 초기화 된다고 한다..

그렇군 ..허허허..ㅠㅠ
오 String에 배열을 주는 경우랑 arr에 배열 표시를 주는 경우랑 둘다된다!
각 단어를 길이로 환산하고 비교하는 것.
다른 방법!
여기서 indexOf 가 무엇일까?
indexOf() - 특정 문자나 문자열에서 해당하는 문자의 인덱스 값을 반환하고 못 찾을 경우 '-1' 반환
즉 못찾을 경우에 -1 을 반환하므로 찾는 경우까지 계속 트루라는 것 while문을 돌리겠다는 것이며
pos에는 띄어쓰기가 발견되기 까지의 index 번호가 발견된다.
nice to meet you 를 예시로 다시 설명해보자. 처음 띄어쓰기를 발견하는 위치의 idnex 숫자는 4일것이다
그러면 pos 에 4가 들어갈 것이다. substring 을 통해서 index 0부터 pos 까지 잘라주면
여기서 subString의 특징을 알아보면 subString(0,4) 라고 했을때 실제로는 index 0,3 번째 까지 글을 잘라낸다
즉 띄어쓰기 위치까지 잘라내는 것이 아니라 그 전단어까지 잘라냄으로 위 상황에서는 그대로 쓰면 된다.
이때 길이를 len에 넣고 최소값으로 초기화 해둔 m 과 계속 비교하면서 값을 넣어준다
그리고 기존의 str 에서 한번 길이를 조회한 단어는 잘라내야 하는데
조회했던 위치 그 다음부터 끝까지 자르고 싶으면
subString( 숫자) 해당 숫자 위치부터 뒤에까지 쭉 담아 줄 수 있는 것이다.
그리고 중요한것!
문장의 맨 마지막에는 띄어쓰기가 없으므로
최종적으로 남은 단어를 갖은 str을 가지고 m과 비교를 해주는 단계를 거쳐야 한다.
코테 관련해서 많이 부담스러웠는데 강의를 통해 푸는 방법을 배우니까 재밌는것 같습니다.
출처 : 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 대시보드 - 인프런 | 강의 (inflearn.com)
'알고리즘 > Java 코딩 테스트 준비' 카테고리의 다른 글
[java] 회문(앞에서 뒤에서 읽을 때 같은 문자) 문자열 풀기 (0) | 2023.01.24 |
---|---|
[Java] 특정 조건에 부합되는 문자 뒤집기(알파벳만 위치 바꾸기) (0) | 2023.01.23 |
[Java] 단어 뒤집기(StringBuilder.reverse()) (0) | 2023.01.22 |
[Java]대소문자 변환 문제 (0) | 2023.01.21 |
[Java]문자열에 포함된 문자 개수 찾기. (0) | 2023.01.21 |
댓글