안녕하세요 Gliver 입니다.
이번 글은 2023 하반기 ICT 인턴십 코딩테스트 후기입니다.
이번 코딩테스트는 (프로그래머스와 같은 국내 사이트가 아닌) 해커랭크라는 해외 사이트를 통해서 진행되었다.
해커랭크 문제 형식은 프로그래머스와 백준의 중간 형태를 띠고 있다.
만약, 해커랭크를 사용해보지 않았다면 테스트 사이트를 통해 사용법을 익혀두는 것을 추천한다.
문제 총평
코딩테스트는 총 6시간에 5문제가 출제되었다.
전체적인 문제 느낌이 구현력보다는 사고력을 요구하는 문제가 주로 나온 거 같다.
내가 느낀 이번 코딩테스트 문제의 대략적인 난이도는 다음과 같다.
(문제에 대한 저작권이 있어 문제에 대한 난이도와 유형에 대해서만 정리하겠다)
A번 - 실버 1
- 무작정 구현하면 시간초과가 발생할 수 있는 문제이다.
- 사고력을 요구하는 문제로 구현은 간단하나 답의 풀이를 떠올리기에 꽤 난이도가 있다.
- 여는 괄호와 닫는 괄호 문제의 로직을 활용하면 쉽게 풀 수 있다.
B번 - 실버 3
- 원소의 중복성을 처리하는 문제로, 파이썬의 dictionary(사전) 자료형을 이용하면 쉽게 풀 수 있다.
C번 - 골드 4
- 2차원 정사각형 행렬에 대한 문제로, 여러 가지 풀이가 나올 수 있는 문제이다. ($\small{N}$: 행렬의 한 변의 크기)
- 이 문제 또한, 무작정 구현하면 시간 복잡도가 $\small{O(N^5)}$으로 시간초과가 난다.
- 2차원 배열에서의 누적합을 하면 시간 복잡도가 $\small{O(N^3)}$ 으로 해결할 수 있다.
- 누적합과 더불어 파라매트릭 서치를 통해서 구현하면 $\small{O(N^2 \cdot \log_2{N})}$ 으로 해결할 수 있다.
D번 - 골드 5
- 문자열 문제로 무작정 구현하면 시간초과가 발생한다.
- 정답 코드는 간단하나, 사고력을 요구하는 문제로 개인적으로 좋은 문제라고 생각한다.
- 문자의 종류와 개수에 대한 정보를 저장하며 풀면 쉽게 풀 수 있다.
E번 - 골드 2
- 이 문제도 무작정 구현하면 시간초과가 발생한다.
- 문제를 DP를 사용할 수 있게끔 재해석하는 것이 관건인 문제였다.
- DP로 재해석한 후에 6가지 정도의 경우의 수로 나누어 점화식을 세우면 풀 수 있다.
- 5문제 중에서 가장 많은 사고력을 요구하는 문제로 골드2 정도의 난이도는 되는 거 같다.
꿀팁
ICT 인턴십 진행 과정을 살펴보면, 코딩테스트는 ICT 인턴십 사이트에서 일괄적으로 수행한다.
즉, 일괄적으로 수행한 후에 기업들에게 해당 학생의 점수를 전달하는 방식이라고 나와 있다.
따라서, 내 생각엔 일단 코딩테스트 점수를 높게 받는 것이 중요하다고 생각한다.
코딩테스트 점수는 각 문제의 점수의 합으로 계산되며, 각 문제의 점수는 문제의 테스트케이스 중에서 맞은 개수가 결정한다.
정확성과 효율성을 모두 갖추는 코드를 짜면 좋지만, 그런 풀이를 생각해내지 못하겠다면 정확성만이라도 가져가는 것이 중요하다.
즉, 어떤 문제를 못 풀더라도, 비효율적이지만 논리는 맞는 코드를 제출해 보라는 것이다.
(이렇게 하면 해당 문제에서 50% 정도의 점수를 얻을 수 있는 것이다.)
'✏️ 알고리즘 > PS 기록' 카테고리의 다른 글
[CodeForces] #905 (Div.3) A~F 업솔빙 (1) | 2023.10.23 |
---|---|
[백준 27986번] 평범한 구성적 문제 (2) | 2023.10.10 |
[백준 10220번] Self Representing Seq (1) | 2023.05.17 |
[백준 13275번] 가장 긴 팰린드롬 부분 문자열 (1) | 2023.05.15 |
[백준 17425번] 약수의 합 (2) | 2023.05.02 |