건전한 건전지
article thumbnail
728x90
반응형

 

https://www.acmicpc.net/problem/5637

 

5637번: 가장 긴 단어

단어는 알파벳(a-z, A-Z)과 하이픈(-)으로만 이루어져 있다. 단어와 다른 문자(마침표, 숫자, 심볼, 등등등...)로 이루어진 글이 주어졌을 때, 가장 긴 단어를 구하는 프로그램을 작성하시오. Apple의

www.acmicpc.net

문자열 기본 문제이다

어제 새벽에 풀어서 그런가 너무 어렵게 접근하다가 잘 안 돼서 아침에 다시 풀었더니 쉽게 풀렸다....

항상 그렇지만 문제의 조건을 잘 확인 해야한다.

다른 문자들도 단어로 처리해서 한 번, 하이픈을 단어로 처리하지 않아서 또 한 번 실패를 경험했다 ㅠ

 

전체 코드

<cpp />
#include <bits/stdc++.h> using namespace std; // 17 + 26 = 43 // 49 + 26 = 75 int main() { cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false); string maxStr; while (1) { // cin은 공백, \n 등을 포함하지 않고 s에 저장함 string s; cin >> s; // 종료 조건인 E-N-D가 나오면 종료 if (s == "E-N-D") break; // 현재 입력받은 문자열의 길이를 세기 위한 변수 int curCount = 0; string tmp = ""; // a-Z와 '-' 만을 문자로 인식할 것임. for (int i = 0; i < s.length(); i++) { if (((s[i] - '0') > 48 && (s[i] - '0') < 76) || s[i] == '-') { curCount++; tmp += s[i]; } else if (((s[i] - '0') > 16 && (s[i] - '0') < 44) || s[i] == '-') { curCount++; tmp += tolower(s[i]); } } // 다른 특수 문자들 ( ~ , . + )을 제외한 문자의 숫자를 세주고, 기존 max의 문자열과 비교하여 삽입 // 지금 카운팅해본 문자열이 기존 문자열보다 짧다면 tmp는 버리고 기존 maxStr을 보존한다 if (curCount > maxStr.length()) { maxStr = tmp; } } cout << maxStr; }

 

728x90
반응형
profile

건전한 건전지

@건전한 건전지

나는 언리얼의 왕이 될 남자다 👑