일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다이나믹프로그래밍
- 자료구조
- 그래프탐색
- 알고리즘
- 코딩테스트
- 문자열
- dp
- 파이썬
- 수학
- DFS
- 깊이우선탐색
- 반복문
- 데이터마이닝
- greedy
- 그리디
- 그래프
- 문제풀이
- 코테
- 큐
- 프로그래머스
- 그리디알고리즘
- DP알고리즘
- Datastructure
- 정렬
- solvedac
- 너비우선탐색
- BFS
- Baekjoon
- 백준
- PYTHON
- Today
- Total
nyunu
[python] 15904, UCPC : 그리디 알고리즘 본문
https://www.acmicpc.net/problem/15904
15904번: UCPC는 무엇의 약자일까?
첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는
www.acmicpc.net
[문제]
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"를 출력한다.
[예제]
[풀이]
💡 문제 요약 : 입력받은 텍스트를 요약해서 UCPC를 만들 수 있는지 확인해보자.
💡 풀이 포인트
UCPCU도, UCCCPC도, UUCPPC도 다 요약해서 UCPC를 만들 수 있다. 대문자만 뽑아서 줄임말을 만들었을 때 UCPC가 되느냐를 묻는 문제가 아니라, 텍스트에서 공백과 소문자를 제거하고 대문자만 남았을 때, UCPC를 만들 수 있느냐를 묻는 문제이다. 물론 순서는 유지하고! 이걸 늦게 알아차려서 ,, 문제를 푸는데 시간이 좀 걸렸다.
이것만 이해했다면, 문제는 너무 쉽다. 'UCPC'를 변수에 입력해두고 U > C > P > C를 차례대로 찾으면 되는 문제 ! U를 찾았으면 다음 C를 찾아주고 이 과정을 반복해서 만약 다 찾았으면 'I love UCPC'를, 다 못찾았으면 'I hate UCPC'를 반환해주면 된다.
sen = input()
result = 'UCPC'
idx = 0
for i in sen:
if i == result[idx]:
idx += 1
if idx == 4:
print('I love UCPC')
break;
else:
print('I hate UCPC')
'코딩테스트_python' 카테고리의 다른 글
[python] 14720, 우유 축제 : 구현, 그리디 (0) | 2024.01.30 |
---|---|
[python] 11508, 2+1 세일 : 정렬, 그리디 (0) | 2024.01.30 |
[python] 2012, 등수 매기기 : 그리디 알고리즘 (0) | 2024.01.26 |
[python] 2178, 미로탐색 (1) | 2024.01.23 |
[python] 15663, N과 M (9) (0) | 2024.01.23 |