SK 코딩테스트 후기 - String다루기

SK 코딩테스트 후기 - String다루기

SK 계열사 중 한곳에 지원, 지난 토요일 코딩테스트를 치뤘다. IDE는 후기에서 말한대로 Codility를 사용했다.

문제는 총 3문제였는데 첫 2개를 30분동안 다 풀고 마지막 1개를 결국 못풀었다… 아쉽다.. 느낌상 셋다 풀고 3번에서 효율성이 떨어지는 정도여야 통과일 것 같아서 마음을 비우고 있는 중이다.

어쨌든 이번이 첫 지원이니 너무 마음쓰지 않으련다. 다음 시험때 더 잘하면 되지. 그럼 의미에서 문제를 복기하고 헤맨 원인을 찾아보려 한다.

왜 못풀었는가

: 사실 이건 어떻게 적든간에 변명밖에 되지 않는다. 내가 좀더 준비되어 있었다면 어떤 방식, 어떤 루트를 취했어도 풀었을 것이다. 일단 문제자체가 “풀이가 어려운” 스타일의 문제가 아니었다. 시험시간 내내 실제 문제를 푸는 로직이 아니라 언어 문법에 얽매어 시간을 허비했던 것이 너무나도 아쉽다. 요리로 비유하자면 요리를 하다 어려워서 시간이 다 간게 아니라 당근을 숟가락으로 썰어야 해서 당근만 썰다 끝난 기분이었다.

결국 내가 생각한 가장 큰 원인은 바보같이 이 문제를 C++로 풀려 했다는거다. 나는 이 문제를 보고, 로직을 정리하기도 전에 “아 이건 문자열을 엄청나게 다루는 문제구나. 파이썬으로 풀어야지” 뭐 이런 생각을 했어야 했다. 하지만 결국은 내탓이다. 파이썬으로 알고리즘 연습을 많이 하지않아 멈칫했고, 분명 언어를 바꿀까 고민도 했지만 끝내는 바꾸지 못했던거다. 시험 보기전에 딱 한번만이라도 파이썬으로 문제를 풀어보고 치뤘다면 아마 이 문제를 풀 수 있었을거다.

문제는 간단했다. 대충 파일명들이 하나의 긴 스트링으로 주어지고, 이 파일명에서 특정 정보 A, B를 뽑아내 A로 그루핑한 후 각 그룹내에서 B로 정렬하는거다. 그런데 바보같이 이걸 C++로 풀려 하니깐 세상에 스트링 tokenizer 함수부터 새로 짜야하더라.. 자바스크립트에 너무 익숙해져서 C++이 얼마나 문자열 다루기에 최악이었는지 잊고있었다… 그리고 그걸 시험시간 40분 남겨두고 기억해냈다ㅠ 나는 선택지가 없었다…

문제 정리

1. 주어지는 파일포멧

  • 이름.확장자, 도시, yyyy-mm-dd hh:mm:ss

2. 정리방법

  • 도시별로 묶는다
  • 같은 도시에서 찍힌 시간별로 정렬한다
  • 새 이름은 [도시명] [숫자인덱스].원래확장자
    • 숫자 인덱스는 같은 도시그룹의 개수따라 001, 002… 와 같이 leading zero 붙여준다
  • 기존 파일명을 새 파일명으로 바꾼 배열 반환한다.

3. 기타조건

  • 사진 M개, 날짜 2000-2020년
  • 이름 중복가능, 모두 영어
  • 동일도시, 동일시간은 없다

댓글