코딩/코딩 이모저모

교내 경시 대비 #2

stonejjun 2020. 8. 9. 04:14

교내 경시를 대비하여 가볍게 돈 셋을 정리하는 글이다. Blackking26과 함께 7월 15일 19시 부터 20시 40분까지 100분 간 진행했다. 지난번 문제는 너무 쉽기도 하고, 구현 연습이 절실했기 때문에 문제는 골드 하위 랜덤 5문제와 실버 상위 구현 태그가 달린 5문제를 넣어서 10문제로 설정했다. 

결과는 10문제 중에 7문제를 풀었다. 비 구현 4문제와 구현 3문제이다. 

A. 주기문으로 바꾸기

주기로 인해서 같은 글자가 되어야 하는 애들끼리 묶어서 생각하자. 당연히 가장 많은 글자를 따라 가는 것이 이득이다. 따라서 주기의 같은 위치에 있는 글자끼리 묶어서 가장 많은 수의 글자가 아닌 글자가 몇 개인지 세기만 해서 더하면 끝이다. 

B. 파이프 옮기기 1

아무리 봐도 딱봐도 DP. 어떤 칸에 마지막으로 파이프가 도달할 때의 가짓수를 DP table에 담으면 된다. 어떠한 칸들에서 현재 칸으로 파이프가 올 수 있는지에 대한 경우들을 DP식으로 담아주면 끝!

C. 님 무기가 좀 나쁘시네요

왜? 구현을? 이렇게? 제발 구현하기전에 1분만이라도 생각을 하고 했으면 좋겠다. 물론 코드를 줄이고, 변수명을 정리하고 하는데 1분보다 더 걸릴 수도 있겠지만, 그 부분은 계속되는 연습을 통해서 줄일 부분이다. 아무리 그래도 아래의 사진과 같은 모습은 좀 아니지 않은가?

D. 정답 비율 계산 하기

보고 걸렀다. 실제 대회에서도 만나면 손을 최대한 늦게 대기 위해서 미루고 미룰만한 문제. 

E. 소가 정보섬에 올라온 이유

굉장히 쉬웠다. 문제가 조금 길어 잘못 읽거나 잘못생각하면 충분히 뇌절이 올 수 있지만, 각 소의 변화가 어떤식으로 영향을 끼치는지 그 변화만 잘 생각해주면 편하게 문제를 해결할 수 있다.

F. 두 부분 문자열

그 문자를 묻는 것도 아니고 길이만 물어본다. 그냥 LIS 뚝딱

G. 거울 설치

나름 갓 문제. 한 거울은 절대로 경로에서 여러번 이용되지 않을 거라는 것을 관찰해야 한다. 따라서 모든 거울은 빛의 경로를 90도 꺾는 효과가 있다. 물론 설치를 안하고 쭉 갈 수도 있다. 따라서 거울을 노드로 보고, 같은 줄에 있는 노드들을 선분으로 이어버리는 것이다. 0-1 bfs 느낌으로 해결할 수 있다. 같은 줄에 도달할 수 있는 모든 노드를 한 번에 넣어버리는 식으로 bfs를 짜면 문제가 해결된다. 물론 문자열로 입력을 받기 때문에 노드설정, 간선 설정 등의 사전 준비 단계에서 꽤나 빡센 구현이 필요하다. 이 문제는 내가 구현을 못한게 아니라 기본적으로 구현이 어려운 문제였다고 생각한다. 

H. 준규와 사과

문제 이해 불가. 사실 입력을 보니까 문제를 딱히 더 읽어서 이해해보고 싶은 마음도 싹 사라졌다.

I. 가장 큰 숫자

생각보다 빡쎈 문제. 구현을 하기 나름인 것 같다. 일단 4^10이 가능하다는 것을 생각해야 한다. 나는 재귀에 굉장히 약하기 때문에 재귀로 짰을 때는 계속 틀려서 그냥 4^10을 모두 돌리고, 주어진 연산자만큼만 딱 사용했을 때만 최댓갑스 최솟값을 업데이트 하는 형식으로 했다. 이렇게 하니까 훨씬 편한 것 같다. 

J. 트럭 

시뮬레이션 문제. 내가 굉장히 어려워 하는 형식의 문제이다. 주어진 상황을 코딩하고 실제로 돌려야 하는데, 전체적인 아이디어와 설정등에 애를 좀 먹는 편이다. 실제로 이 문제도 문제의 조건들을 빠짐없이 코딩해야 하는 부분에서 실수를 일으켰다. 하지만 그래도 많이 연습해서 그런지 생각보다는 빠르게 해결한 문제.

...

갑자기 2학기로 교내 경시가 미뤄졌다는 소식이다. 이 연습이 끝나면 시험기간이라서 코딩 속도와 숙련도가 다시 감소할 예정이다....