일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코루틴
- AWS
- android
- MyVoca
- pandas
- androidStudio
- textfield
- activity
- Python
- 암호학
- Coroutine
- Codeforces
- boj
- Hilt
- architecture
- 코드포스
- Kotlin
- Rxjava
- ProGuard
- 백준
- Compose
- Gradle
- 프로그래머스
- Coroutines
- 쿠링
- relay
- TEST
- livedata
- MiTweet
- GitHub
- Today
- Total
이동식 저장소
Codeforces Round #656 (Div. 3) 가상 참가 후기 본문
1학기 조별과제, 계절학기, 기타 등등 이런저런 사정으로 인해 거의 세 달 가까이 코포를 하지 못했다. 그래서 내 실력이 얼마나 늘었는지, 또는 늘기는 했는지 알아보기 위해 대회에 가상으로 참여해 보기로 했다. 코드포스의 대회에 Virtual Participation을 신청하면 실시간처럼 대회에 참여할 수 있다. 물론 이미 끝난 대회만 가능하다.
대회는 내가 가장 많이 참여했던 Div.3을 선택했다.
Dashboard - Codeforces Round #656 (Div. 3) - Codeforces
codeforces.com
A. Three Pairwise Maximums
가 주어질 때, x,y,z 를 만족시키는 x=max(a, b), y=max(a, c), z=max(b, c) 를 찾으시오. a,b,c
코드포스의 전형적인 '아무거나 찾으시오' 문제이다. 이럴 때는 가장 쉬운 답을 찾으면 된다. 그런데 나는
답을 찾기 위해 다음의 배열 arr를 선언한다.
대충 가능해 보이는 값들을 전부 모은 배열이다. 마지막 원소는 원래 $min(x,~y,~z)-1$을 의미하는데, 이 값이 0이 되는 문제가 있어서 조금 수정했다. 이거 때문에 한 번 틀렸다.
그런 다음
아이디어를 너무 늦게 떠올렸다. 오답 페널티를 감안해도 10분 걸린 건데, 이런 건 5분 안에 풀고 넘어갈 수 있어야 한다.
B. Restore the Permutation by Merger
주어진 조건에 따라, 수열에서 길이가 a 인 순열 n 를 찾으시오. p 는 항상 유일하게 존재한다. p
순열
을 이미 찾았다면 아래를 건너뛴다.cur 의 뒤에cur 과 같은 값이 등장하는 위치를cur 이라고 하자. 등장하지 않는다면 아래를 건너뛴다.loc 의 위치부터cur 이전까지의 각 값loc 이(it) 에 등장한 적이 없다면p 을it 에 추가하고, 이미 등장했다면 추가하지 않는다.p
수열
두 개의
발상이 어렵지 않았다. 아직까지는.
C. Make It Good
수열에서, 앞에서부터 몇 개의 원소를 제거하여 좋은 수열 a 를 만들고자 한다. 원소를 최소한 몇 개 제거해야 하는가? b

증가 또는 감소하는 도중에 같은 값이 연속해서 존재해도 된다. 백준에도 바이토닉 수열이라고 해서 비슷한 문제가 존재한다. 단 백준에서는 단조 증가하다가 단조 감소해야 한다.
어쨌든
사실 한 번 틀렸다
앞에서부터 찾으면 최대
D. a-Good String
주어진 문자열를 a-Good string으로 만들기 위해 최소 몇 번 연산해야 하는가? s
어떤 문자열이
의 길이가 1일 때, 구하는 값은s 이면s[0]=c , 아니면0 이다.1 의 길이가 1보다 크다면, 두 번째 조건 또는 세 번째 조건을 만족하도록 하기 위해 필요한 연산의 최솟값 중 더 작은 값을 찾으면 된다.s
그런데 구현에 문제가 있나.. 왜 예제조차 틀리지?
결국 D는 못 풀었다. 사실 평소대로 대회가 시작했다면 딱 한 시간 된 이때쯤 끄고 잔다.
틀린 이유
두 번째 조건을 만족하려면 s의 왼쪽 절반을 모두 c로 바꿔야 한다. 마찬가지로 세 번째 조건을 만족하려면 s의 오른쪽 절반을 모두 c로 바꿔야 한다. 그런데 나는 왼쪽 절반과 오른쪽 절반 모두 solve를 호출했으니 틀릴 수밖에 없다. 시간이 조금 더 있었으면 맞혔을 지도 모른다..라는 희망을 가져 본다.

오랜만에 해서 그런지 실수가 잦았다. D에 유효 슈팅을 몇 번 날리긴 했다는 점에서 만족해야 할 듯. 5월의 나는 C번까지 겨우 풀고 잤으니 조금이나마 발전했다고 할 수 있..겠지?
당분간은 Div. 3이 없는 것 같던데. Div. 2를 해 봐야 하나?
'Problem Solving > Codeforces' 카테고리의 다른 글
Codeforces Round #677 (Div. 3) 참가 후기 (0) | 2020.10.21 |
---|---|
Codeforces Round #661 (Div. 3) 참가 후기 (0) | 2020.08.06 |
Codeforces Round #640 (Div. 4) 참가 후기 (0) | 2020.05.10 |
Codeforces Round #636 (Div. 3) 참가 후기 (0) | 2020.04.28 |
Codeforces Round #634 (Div. 3) 참가 후기 (0) | 2020.04.15 |