1. 문제
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력해 보자.
문장 속의 각 단어는 공백으로 구분.
첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러 개일 경우 문장 속에서 가장 앞쪽에 위치한 단어 출력
2. 예시
It is timme to study
study
cat tiger lion puppy
tiger
3. 코드
- 공백이 나오면 split을 사용해 문자열을 잘라 배열로 담아준다.
- 문장의 단어 중 가장 긴 단어를 찾으려면 단어의 길이를 확인해야 한다. 이때 비교대상이 필요하므로 int min = 0; 을 추가해 최소 길이 값을 만들어 놓는다.
- 여기서 조건에 음수가 있으면 int min = Integer.MIN_VALUE;로 넣어 음수 일 경우도 비교할 수 있도록 한다.
- 데이터타입이 표현할 수 있는 숫자 범위
- MIN_VALUE / MAX_VALUE -> 실제 개발 시, 값이 달라질 경우 숫자로 표현하면 따로 수정이 필요하지만 상수로 적어놓으면 수정할 필요 없다.
- 현재는 정수 값만 비교하면 되므로 0으로 사용해도 무방함
- 여기서 조건에 음수가 있으면 int min = Integer.MIN_VALUE;로 넣어 음수 일 경우도 비교할 수 있도록 한다.
- 담은 배열의 길이만큼 for문을 돌려 min과 길이를 비교한다.
- 출력예시
- 문장 -> apple grape banana
- if문이 성립할 경우, min에 a의 길이를 저장한다.
- 맨 처음 a [0]. length()가 min보다 크다 (5 > 0) if문이 성립되므로 min은 5로 저장된다.
- ans = a[0] -> apple
- a [1]. length()는 min보다 크다 5 > 5 -> 부등식이 fasle가 되므로 if문 성립이 되지 않는다.
- 만약 = 가 포함되어 있으면 if 문 성립으로 ans의 값이 바뀔 것이다.
- a [2]. length()는 6이 되므로 if문 성립
- ans = banana
4. 마무리
split으로 겨우 결과 값 리턴했는데 indexOf(), substring()을 사용해서 리턴하는 방법이 있었다.
- while문의 조건을 보면 str.indexOf(' ')를 저장한 empty가 -1이 아닐 경우가 true이면 조건식이 성립하게 되어있다.
- 문장을 apple grape banana로 예시를 들어보자.
- substring을 사용해서 0부터 공백까지(empty) 자른 문자를 tmp에 저장한다.
- 저장한 tmp의 길이를 len에 담아 min과 길이 비교를 한다.(if문)
- if문이 성립하면 min에 len을 담아준다.(문자열 길이 비교)
- 다음 while문 조건식을 확인하기 위해 처음 str의 공백 다음 문자열이 시작하기 전까지 자른 후 str에 저장한다.
- while문이 돌다가 조건에 -1 되어 밖으로 나오게 되면 길이 비교식이 없으니 if문으로 추가한다.
시작은 0부터 할 것.
[indexOf()]
1.indexOf('A') - A를 찾는다.
2.indexOf('A', 'n') - n번째부터 A를 찾는다.
순번은 정하지 않으면 0부터 즉, 처음부터 찾는다.
[substring()]
1.substring('A', 'B') - A부터 B-1까지 자른다.
2.substring('A') - A부터 출력하기
'알고리즘(Algorithm)' 카테고리의 다른 글
[Algorithm] 중복문자제거 (0) | 2023.03.24 |
---|---|
[Algorithm] 특정 문자 뒤집기 (0) | 2023.03.23 |
[Algorithm] 단어 뒤집기 (0) | 2023.03.13 |
[Algorithm] 대소문자 변환하기 (0) | 2023.03.07 |
[Algorithm] 문자열 찾기 (0) | 2023.03.06 |