여러 단어로 구성된 문장이 주어졌을 때, 그 문장에서 가장 긴 단어의 길이를 찾아내는 것이 이번 튜토리얼의 목표입니다. 문자열을 한 글자씩 순회하면서 공백을 기준으로 단어를 구분하고, 각 단어의 길이를 비교하는 방식으로 해결할 수 있습니다.
예시
입력: hello I am here 출력: maximum length of a word is: 5 입력: tutorials point is the best learning platform 출력: maximum length of a word is: 9
해결 접근 방법
- 문장을 하나의 문자열로 입력받습니다.
- 문장의 끝까지 반복문을 수행하며 문자열을 탐색합니다.
- 공백이 아닌 문자가 나오면 현재 단어 길이를 1씩 증가시키고, 공백을 만나면 지금까지 계산한 단어 길이를 임시 변수에 저장합니다.
- 임시 변수에 저장된 길이 값들을 max() 함수에 전달하여 가장 큰 값을 반환받습니다.
- max() 함수가 반환한 최대 길이를 화면에 출력합니다.
알고리즘
Start
Step 1-> 문장에서 가장 긴 단어의 길이를 계산하는 함수 선언
int word_length(string str)
set int len = str.length()
set int temp = 0
set int newlen = 0
Loop For int i = 0 and i < len and i++
IF (str[i] != ' ')
Increment newlen++
End
Else
Set temp = max(temp, newlen)
Set newlen = 0
End
return max(temp, newlen)
Step 2-> main() 함수에서
declare string str = "tutorials point is the best learning platform"
call word_length(str)
StopC++ 구현 코드
#include <iostream>
using namespace std;
// 가장 긴 단어를 찾는 함수
int word_length(string str) {
int len = str.length();
int temp = 0;
int newlen = 0;
for (int i = 0; i < len; i++) {
if (str[i] != ' ')
newlen++;
else {
temp = max(temp, newlen);
newlen = 0;
}
}
return max(temp, newlen);
}
int main() {
string str = "tutorials point is the best learning platform";
cout << "maximum length of a word is : " << word_length(str);
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
maximum length of a word is : 9
코드 설명
위 프로그램은 문자열을 처음부터 끝까지 한 글자씩 검사합니다. 공백이 아닌 문자를 만나면 newlen 변수를 1씩 증가시켜 현재 단어의 길이를 셉니다. 공백을 만나면 하나의 단어가 끝난 것이므로, temp 변수에 저장된 기존 최대값과 현재 단어 길이를 비교하여 더 큰 값을 유지하고 newlen을 0으로 초기화합니다.
반복문이 종료된 후에는 마지막 단어의 길이도 고려해야 하므로, 최종적으로 max(temp, newlen)을 반환합니다. 위 예제에서 가장 긴 단어는 "tutorials"와 "platform"으로 길이가 9이므로 출력값은 9가 됩니다.
이 알고리즘의 시간 복잡도는 O(n)으로, n은 문자열의 전체 길이입니다. 따라서 문장 길이에 비례하는 선형 시간 안에 효율적으로 처리됩니다.