Notice
Recent Posts
Recent Comments
«   2024/12   »
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
Archives
Today
Total
관리 메뉴

블로그 언저리인 무언가

2023 SCON 후기 본문

Programming/Etc

2023 SCON 후기

he1fire 2023. 5. 24. 03:28
728x90

문제 : 2023 SCON

 

2023 SCON

사용 가능한 언어 C++17 Python 3 C11 PyPy3 Java 15

www.acmicpc.net

저번주 주말에 SCON에 참가했다.

복학한 이후 동아리에 아는 분들이 많지 않아 팀을 구하는 것에 애를 먹었는데

다행히도 실력이 비슷한 분들이 모여서 대회에 참여할 수 있었다.

확실히 2년 놀다 오니 PS실력이 떨어진 게 체감은 되었지만

그래도 팀연습을 좀 하니 약간 감이 살아나서 다행이었다.

이번 대회는 문제가 A번부터 쉬운 순서로 배열된다고 해서

시작 전에 각자 A-D-G, B-E-H, C-F-I 번을 맡아 읽기로 했는데

실제 대회 도중에는 다 뒤엉켜서 결국 별의미 없어져 버렸다 ㅋㅋ,,


A번 (정보섬의 대중교통)

Solve : he1fire

Code : he1fire

가장 쉬운 A번부터 후딱 풀려고 내가 잡게 되었는데 예제 설명에 오류가 있어

그것 때문에 문제 이해가 안 되어서 뇌절하는 바람에 5분이나 걸려버렸다.

문제 자체는 그냥 조건문으로 케이스 분류만 하면 되는 쉬운 문제였다.

C번 (등차수열의 합)

Solve : he1fire

Code : he1fire

팀원분이 C가 헷갈린다고 하셔서 봤는데 생각보다 간단한 문제였고

B번 구현이 약간 시간이 걸린다고 하셔서 먼저 풀게 되었다.

어떤 등차수열 2개를 더해 만들어지는 수열은 무조건 등차수열이므로

등차수열인지 판별한 후 해당하는 수열 2개를 만들어서 제출하면 된다.

그냥 등차수열 A와 {0,0...}으로 이루어진 등차수열을 출력하는 게 가장 편리하지만

대회 때는 그 생각이 안 나서 2*A와 -1*A를 만들어 출력했다.

B번 (팀명 정하기)

Solve : rkaskan506

Code : rkaskan506

그냥 간단하게 입학 연도와 문제의 개수를 기준으로 정렬해서 출력하면 되는 문제였다.

처음부터 팀원분이 잡고 혼자 풀고 제출까지 하셔서

대회가 끝나고 나서야 무슨 문제인지 읽어볼 수 있었다.

E번 (plong longf)

Solve : he1fire

Code : he1fire

C번을 풀고 나서 남은 문제를 보니 다른 팀원분은 D번을 풀고 계셨고

스코어 보드상에서 D번보다 E번이 많이 풀려있어서 읽게 되었다.

"long"이 이어진 묶음마다 경우의 수를 구하고

이를 곱하면 되는 문제였는데 곰곰이 생각해 보니

각 "longlong"과 "long"로 묶는 경우의 수를 구하는 것이

2*1 타일링 DP문제와 같다는 것을 깨달아 바로 풀어 제출해서 맞을 수 있었다.

D번 (선택정렬의 이동거리)

Solve : i_am_commang, rkaskan506

Code : i_am_commang

문제 자체는 i번째 선택정렬을 할 때마다

Ai를 i번째 칸으로 이동시키면 되는 문제였지만

구현과정에서 좀 꼬여서 시간이 지체되고 있었는데

다른 팀원분이 디버깅을 도와주셔서 오류를 찾아서 풀 수 있었다.

G번 (Traveling SCCC President)

Solve : i_am_commang, he1fire

Code : he1fire

원래 내가 F번을 풀고 예제가 나오지 않아 디버깅 중이었는데

옆에서 팀원분이 G번 풀이에 대해 이야기하는 것을 들으니

어디에서 출발하던 지금까지 방문했던 어느 점으로 순간이동해

트리를 그리는 것이 최솟값이므로 그냥 MST를 구하면 되는 문제여서

F번을 잠시 내버려 두고 이 문제 먼저 풀게 되었고 깔끔하게 통과했다.

F번 (안전한 건설 계획)

Solve : he1fire

Code : he1fire

비용이 적게 드는 순서대로 기둥을 세운다면

어떤 기둥을 먼저 세운다고 해서 다른 기둥을 세울 때 손해보지 않으므로

그리디가 성립한다고 생각해서 바로 코딩에 들어갔다.

nest_permutation 함수를 이용해 모든 조합을 구해서

가능한 작업비용이 적은 것부터 먼저 해결하도록 했는데

코드가 무한루프를 돌아서 디버깅을 하다 G번을 풀고 나서

다시 확인해 보니 for문중 하나에 ++부분이 빠져서 작동하지 않았던 것이었다,,

그것만 바로 추가하니 맞아서 상당히 허탈했는데

ICPC때는 이런 실수하지 않도록 유의해야겠다.


이후에 나는 H번, 나머지 팀원 두 분이서 I번을 잡고 풀었는데

H번은 내가 생각한 풀이가 틀렸었고, I번은 풀이는 찾았으나

시간이 30분 정도밖에 안 남아서 코딩 후 디버깅을 하다가 시간이 종료되어 마무리했다.

결과적으로 2등을 하게 되었는데 1등 팀과는 스코어보드 상에서

이미 차이가 많이 나는 것을 알고 있었어서 깔끔하게 결과에 만족할 수 있었다.

정말 오랜만에 치러본 PS대회였는데 나름 좋은 성적을 거둔 것 같아서 기분이 좋다.

아마도? 이 멤버 그대로 ICPC도 나가지 않을까 싶긴 한데

이번에는 19년도처럼 다시 본선에 진출할 수 있으면 좋겠다.

728x90

'Programming > Etc' 카테고리의 다른 글

2024 SCON 후기  (0) 2024.05.27
컴퓨터 바꾼김에 쓰는 VScode 세팅법  (0) 2021.09.30
2020 ICPC Seoul Regional 예선 후기  (0) 2020.10.11
자주 쓰지만 까먹는 문법 모음  (0) 2020.09.26
Comments