슬슬 전역이 코앞(까진 아니긴 하지만...)이고,
22년 상반기에는 대외활동 및 협업 경험을 착실히 쌓고 싶어 알아보던 도중,
우아한테크코스가 상당히 매력있게 느껴져 지원했다.
그리고 오늘, 우아한테크코스 4기 1차 코딩테스트를 응시하였다!
우테코는 아무래도 코딩테스트보다는 자소서의 비율이 훨씬, 훨씬, 훨씬(x100) 높다고 들어서 자소서에 공들였으며,
알고리즘은 그동안 백준 및 코딩테스트 경험이 꽤 있었기 때문에
코딩테스트는 비교적 가벼운 마음으로 응시할 수 있었다.
나는 기존에 사용하던 C++로 코딩테스트를 응시했으며,
응시환경은 프로그래머스,
시험은 4시간 7문항으로 이루어져있었다.
프로그래머스 정책 상, 기업 코딩테스트 문제 언급이 불가능하므로,
간단한 난이도 및 느낀 점 위주로 포스팅하겠다.
난이도 후기
문제 | 주관적인 난이도 | 사용 알고리즘 |
1번 | Bronze IV | 사칙연산, 구현 |
2번 | Bronze II | 문자열, 사칙연산 |
3번 | Silver V | 문자열, 자료구조(map), 구현 |
4번 | Silver V | 문자열 |
5번 | Silver IV | 구현 |
6번 | Bronze I | 사칙연산, 문자열 |
7번 | Silver III | 구현 |
전체적으로 걸린 시간은 1시간 내외였으며, 검토시간 약 40분 정도를 추가로 거쳤다. (21.11.07. 추가: 검토까지 합쳐서 1시간 내외로 오해할 소지가 있어 문장 수정함.)
+) 22.04.25 추가. 저는 평소에 알고리즘 푸는 걸 좋아했었기 때문에 쉽게 느낀 것일 확률이 높습니다. (평소에 백준 플레티넘 문제들을 즐겨 풀곤 했습니다.) 우테코 4기 합격자 기준, 마냥 쉽진 않았다는 평이 대부분입니다. 실버가 실전에선 생각보다 어려워요
정답 여부를 알 수 없었기 때문에 TC들을 꽤 많이 제작하여 테스트해보았다.
특히 4번은 TC를 만들기가 쉬워 20개는 만들어본 듯...
시험 시작 전에 접속이 원활하게 되지 않는 이슈가 있었나보다.
나는 크게 문제없이 12시 땡 되자마자 접속할 수 있었다.
1번은 정말 간단한 사칙연산 문제였기 때문에 검토에도 큰 시간을 쏟지 않았다.
(이랬는데 1번 틀리면 어떡하지?ㅋㅋㅋ....)
1분 내외로 걸린 걸로 기억한다.
2번은 시작시각, 종료시각이 번갈아가면서 주어지는데, 흔히 나오는 유형인 시간파싱 문제였다.
적절한 파싱 외에는 1번과 거의 난이도가 비슷하다.
3번부터 슬슬 난이도가 조금씩 올라가기 시작했다.
푸는 방법은 여러가지가 있겠지만, 나는 map을 이용하여 O(1)에 꺼내쓸 수 있도록 하였다.
또한, 문자열 파싱이 조금 까다로울 수 있기 때문에 substr이 아닌 stringstream을 사용하였다.
3번은 검토가 가장 빡센 문제 중 하나였는데, 테스트케이스가 꽤나 상세하게 주어져있었기 때문에, 그냥 믿음을 가지고 디버깅을 많이 안했다...
4번은 다시 난이도가 급격하게 내려갔지만, 약간의 트릭이 필요했다.
문자열을 원형으로 이어서 만드는 경우는 문자열을 두 개 연달아 이어서 생각하면 되기 때문에,
적절한 구현을 통해 해주었으며, 검토를 통해 "aaaaaa" 와 같이 하나의 문자만 연달아 있는 문자열 예외처리를 안해주었다는 사실을 나중에 발견하고 처리해주었다.
이 문제에서 테스트케이스를 20개 넘게 만들어보았고, 프로그래머스 실행에서도 한 10개 정도 집어넣어서 직접 돌려본 것 같다.
5번은 꽤 난이도가 있었다. 아마 5번부터 프로그래머스 lv2가 되지 않을까 예상한다.
홀수일 때는 오른쪽, 짝수일 때는 아래로 이동하며, 범위를 벗어날 경우 다시 첨부터 진행하도록 한다. 이는 %연산자를 통해 구현했으며, 방문여부체크 배열을 삼차원으로 만들어 진행해주면 된다.
bfs/dfs가 필요한 것처럼 느껴질 수 있는데, 딱히? 그렇진 않다. 그냥 반복문으로 적절히 처리해주면 된다.
테스트케이스를 만들긴 쉬운데, 그 TC가 정답인지 확인하기가 까다로웠기 때문에 얘도 검토를 많이는 하지 않았다.
6번은 내가 문제를 이해를 잘못한건지 모르겠는데, 갑자기 난이도가 내려갔다.
처음에 문제를 읽을 때도, 문제가 전혀 이해가 되지 않아 감독관님께 여쭤봤는데, 이상이 없다는 답변(이나 다름없는 답변)을 듣고 문제이해에 한참 시간을 쏟은 것 같다. 사실 지금도 제대로 이해했는지는 잘 모르겠다.
출발 시각이 금요일 퇴근시각보다 빠를 경우 휴가에서 시간이 빠져나가고,
도착 시각이 월요일 출근시각보다 늦을 경우 휴가에서 시간이 빠져나간다.
주의할 점은, 금요일 출근시각 전에 이미 출발했거나, 월요일 퇴근시각 후에 도착해버리면 그대로 휴가시간을 빼는게 아니라 퇴근시각-출근시각 만큼만 빼줘야된다.
아무튼 이렇게 해서 쉽게 풀었는데, 너무 쉽게 해결한 것 같아 문제를 잘못읽지 않았을까 생각도 든다.
7번은 가장 어려운 문제였다. 5번보다 약간 난이도가 높은 것 같은데,
백준 '배열돌리기' 문제(https://www.acmicpc.net/problem/16926)의 극하위호환이었기 때문에 쉽게 접근한 것 같다.
다만, 이 문제에선 정사각형이 아니라 정삼각형이어서 index의 가로, 세로가 같지 않으므로 헷갈릴 수 있는데, clockwise와 counterclockwise일 때 index 변화를 잘 체크해주면 쉽게 풀 수 있다.
얘도 TC를 많이 만들기엔 정답파악이 쉽지 않아서 정1각형~정5각형 정도만 테스트해보았다.
프로그래머스 특징인지,
아니면 요즘 대세인지 모르겠지만, 문자열 파싱 위주의 문제가 많이 나왔다.
얼마 전에 stringstream의 중요성을 느끼고 공부했는데, 공부하길 정말 잘한듯하다.
자소서로 당락이 갈릴 것 같은데,
어떻게 될지 모르겠다.
아무쪼록 좋은 결과가 나왔으면 좋겠다.
(+21.11.19 추가)
합격할 줄 몰랐는데 합격했다!
프리코스 3주간 빡세게 달려봐야겠다
+) 21.12.31 추가
최종 코딩테스트 후기는 여기서 볼 수 있습니다.
https://kth990303.tistory.com/231
최종합격 후기는 여기서 볼 수 있습니다 :)
https://kth990303.tistory.com/239
'PS > My Diary (PS, 대회후기)' 카테고리의 다른 글
[211212] SASA Programming Contest 2021 Open Contest 후기 (0) | 2021.12.13 |
---|---|
[211204] 2021 서강대 프로그래밍 경진대회(SPC) Master를 풀어보았다. (0) | 2021.12.05 |
[211031] 백준에 잔디 기능이 생겼다 + 나의 백준일지 (0) | 2021.10.31 |
[211030] 2021 아주대학교 프로그래밍 경진대회 APC Open 후기 (0) | 2021.10.30 |
[211020] 그룹 Virtual 코딩테스트 연습6 후기 (0) | 2021.10.21 |