대회링크 : https://codeforces.com/contest/1800
A. Is It a Cat?
문제 : 주어진 문자열에서 m, e, o, w 가 순차적으로 나오는지 판별
간단하게 meow가 순차적으로 나왔는지 판단하고
해당차례에 해당 문자 혹은 해당 이전의 문자가 아닌 다른문자가 나올 경우 불가능으로 판단
B. Count the Number of Pairs
문제 : 대, 소문자의 같은 알파벳끼리 최대로 이루는 짝의 개수 출력
대문자에서 소문자, 소문자에서 대문자로 최대 K번 바꿀 수 있음
각 알파벳 별로 대문자와 소문자를 나누고
이때 짝을 이루는 개수는 각 알파벳별로 min(대문자, 소문자) 이고
대소문자를 치환하여 짝을 만들수 있는 경우는 abs(대문자 - 소문자)/2 가 되며
K번 초과 해서 짝을 만들 수 있는 경우엔 최대 K개의 짝을 만들 수 있다.
C. Powering the Hero
문제 : 카드를 순차적으로 뽑아 얻을 수 있는 최대 파워 출력
0번 카드(히어로)를 뽑은 경우 더미 가장 위의 에너지카드 만큼 파워를 얻는다.
그외의 카드(보너스)인 경우 더미 위에 카드를 올리거나 버릴 수 있다.
우선순위큐를 사용하여 보너스 카드인 경우에는 항상 넣어주며
히어로 카드인 경우에는 우선순위큐가 비어있지 않다면 하나를 꺼내 파워를 얻는다.
D. Remove Two Letters
문제 : 주어진 문자열에서 연속된 2글자를 제거했을 때 나올 수 있는 문자열의 개수 출력
해당 문제에서 substr을 이용해 단순하게 구현 했을 때 메모리초과를 당하였다.
길이가 N인 문자열에서 문자열을 2개 제거 했을 경우 만들 수 있는 경우는 총 N-1가지 이며
문자열을 처음부터 비교했을때 2칸 뒤의 문자열이 현재 문자열과 같은 경우에 중복되므로 1가지씩 줄인다.
ex) @aba# -> @(ab)a# = @a#, @a(ba)# = @a# 로 중복되게 된다.
E. Unforgivable Curse
문제 : 주어진 문자열을 이동시켜 원하는 문자열로 변환 할 수 있는지 판별
해당 위치의 문자열은 K칸 앞, 뒤 혹은 (K+1)칸 앞, 뒤 문자와 교환 할 수 있으며 횟수 제한은 없다.
해당 위치에서 BFS탐색을 통해 연결 된 곳은 모두 서로 하나의 집합에 속하게 된다.
따라서 BFS를 통해 집합을 나누고 각 집합의 알파벳 개수가 동일하다면 A문자열에서 B문자열로 치환이 가능하다.
F, G - 아직 실력이 부족해 풀지 못하였다.

'후기' 카테고리의 다른 글
| [Codeforces] Edu Round 145 후기 (0) | 2023.03.25 |
|---|---|
| [Codeforces] Round 856 Div.2 후기 (0) | 2023.03.05 |
| [데브매칭] 2021 Dev-Matching: 웹 백엔드 개발자(하반기) 후기 (0) | 2021.10.19 |
| JetBrains x 프로그래머스 월간 코드 챌린지 시즌3(10월) 후기 (0) | 2021.10.08 |
| [카카오] 2022 신입 개발자 블라인드 채용 1차 코딩테스트 후기 (0) | 2021.09.18 |