반응형
문제 링크 : https://www.acmicpc.net/problem/5637
풀이
"E-N-D"라는 문자열이 들어오기 전까지 계속해서 입력을 받는다.
받은 문자열은 소문자로 바꿔주고 'a'와 'z'사이 또는 '-'일 경우 임시 단어 변수인 word에 저장한다.
만약 다른 문자가 나왔다면 단어가 끝났으므로 단어의 길이를 측정하여 최댓값을 갱신한다.
최댓값이라면 정답 단어를 바꿔주고 다시 임시 단어 변수를 비워준다.
for문이 끝났을 때에도 같은 방식으로 최댓값 갱신을 수행한다.
"E-N-D"가 들어오면 가장 긴 단어를 출력해주면 된다.
코드
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
int maxLen = -1;
string ans;
while(true){
string tmp;
int len = 0;
cin >> tmp;
if(tmp == "E-N-D") break;
transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);
string word = "";
for(int i=0; i<tmp.size(); i++){
if((tmp[i] >= 'a' && tmp[i] <= 'z') || tmp[i] == '-'){
word += tmp[i];
}
else {
len = max(len, (int)word.size());
if(len > maxLen){
ans = word;
maxLen = len;
}
word = "";
}
}
len = max(len, (int)word.size());
if(len > maxLen){
ans = word;
maxLen = len;
}
}
cout << ans;
}
반응형
'Programming Solve > BOJ' 카테고리의 다른 글
BOJ 10816 - 숫자 카드 2 / C++ (0) | 2022.04.13 |
---|---|
BOJ 2609 - 최대공약수와 최소공배수 / Swift (0) | 2022.04.11 |
BOJ 9342 - 염색체 / C++ (0) | 2022.04.10 |
BOJ 14405 - 피카츄 / C++ (0) | 2022.04.09 |
BOJ 2929 - 머신 코드 / C++ (0) | 2022.04.09 |