티스토리 뷰
문제(1초 / 512MB)
UCPC는 '전국 대학생 프로그래밍 대회 동아리 연합 여름 대회'의 줄임말로 알려져있다. 하지만 이 줄임말이 정확히 어떻게 구성되었는지는 아무도 모른다. UCPC 2018을 준비하던 ntopia는 여러 사람들에게 UCPC가 정확히 무엇의 줄임말인지 물어보았지만, 아무도 정확한 답을 제시해주지 못했다. ntopia가 들은 몇 가지 답을 아래에 적어보았다.
- Union of Computer Programming Contest club contest
- Union of Computer Programming contest Club contest
- Union of Computer Programming contest club Contest
- Union of Collegiate Programming Contest club contest
- Union of Collegiate Programming contest Club contest
- Union of Collegiate Programming contest club Contest
- University Computer Programming Contest
- University Computer Programming Club contest
- University Computer Programming club Contest
- University Collegiate Programming Contest
- University CPC
- ...
ntopia는 이렇게 다양한 답을 듣고는 UCPC가 무엇의 약자인지는 아무도 모른다고 결론내렸다. 적당히 슥삭해서 UCPC를 남길 수 있으면 모두 UCPC의 약자인 것이다!
문자열이 주어지면 이 문자열을 적절히 축약해서 "UCPC"로 만들 수 있는지 확인하는 프로그램을 만들어보자.
축약이라는 것은 문자열에서 임의의 문자들을 제거하는 행동을 뜻한다. 예를 들면, "apple"에서 a와 e를 지워 "ppl"로 만들 수 있고, "University Computer Programming Contest"에서 공백과 소문자를 모두 지워 "UCPC"로 만들 수 있다.
문자열을 비교할 때는 대소문자를 구분해 정확히 비교한다. 예를 들어 "UCPC"와 "UCpC"는 다른 문자열이다. 따라서 "University Computer programming Contest"를 "UCPC"로 축약할 수 있는 방법은 없다.
그나저나 UCPC는 정말 무엇의 약자였을까? 정확히 아시는 분은 제보 부탁드립니다.
입력
첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 경우도 없다.
출력
첫 번째 줄에 입력으로 주어진 문자열을 적절히 축약해 "UCPC"로 만들 수 있으면 "I love UCPC"를 출력하고, 만들 수 없으면 "I hate UCPC"를 출력한다.
예제 입력 1 복사
Union of Computer Programming Contest club contest
예제 출력 1 복사
I love UCPC
예제 입력 2 복사
University Computer Programming
예제 출력 2 복사
I hate UCPC
문제 접근
매우 기본적인 문제였다. 길이는 최대 1000자인데다가 시간은 1초라서 매우 간단하게 O(n)의 시간복잡도로 풀면된다. 기본적으로 문제는 여기가 아니라 "어떻게 띄어쓰기가 포함된 문자열을 input으로 받는가?"였던거 같았다.
이 문제에 대해서는 getline(cin, 문자열의 변수명) 을 이용해 풀었다. 이 함수를 이용하면 띄어쓰기 포함된 문자열을 간단하게 input할 수 있다.
/* UCPC의 약자는 무엇의 약자일까요? */
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int idx = 0;
string input;
string res = "UCPC";
vector<char> arr;
int main() {
getline(cin, input); // 이게 포인트네!
for(int i = 0; i < input.size(); i++) {
if(input[i] == res[idx]) {
arr.push_back(input[i]);
idx++;
}
}
if(idx == 4) flag = true;
if(flag) {
cout << "I love UCPC" << endl;
}
else {
cout << "I hate UCPC" << endl;
}
return 0;
}
'Algorithm > baekjoon' 카테고리의 다른 글
9576_책 나눠주기 (0) | 2020.08.25 |
---|---|
1449_수리공 항승 (0) | 2020.08.25 |
15903_카드 합체 놀이 (0) | 2020.08.24 |
2810_컵홀더 (0) | 2020.08.24 |
13305_주유소 (0) | 2020.08.23 |
- Total
- Today
- Yesterday
- 프로그래밍
- 공용체
- 회전리스트
- 시간복잡도
- 알고리즘
- 직접 지정
- 강의
- 형승격
- 1차원 배열
- 재귀함수
- Algorithm
- 공부
- 자료구조
- 비트필드
- codeit
- 포인터
- call by reference
- 다차원 배열
- 구조체
- inflearn
- 파이썬
- 공간복잡도
- C
- 간접 지정
- 2차원 배열
- timecomplexity
- 배열
- call by value
- 종류
- 3차원 배열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |