[코딩테스트] 2020 상반기 LINE 신입 공채 코딩테스트

1 분 소요


출처 : https://unsplash.com/photos/m_HRfLhgABo

2020/04/05 라인 신입 공채 코딩테스트를 보았다. 체감상 난이도는 막 엄청 어렵진 않았다. 총 2시간 30분동안 6문제를 풀어야했다. 시간만 조금 더 있었으면 6문제 중에 5문제는 풀지 않았을까 싶었지만 아니나 다를까 문제를 다시 복기하면서 사소한 실수들이 쏟아져 나왔다….

1번

쉬운 문제라고 시간에 쫓겨 빨리 풀고 넘기다가 틀려버렸다. 스택을 이용하여 문제를 풀면된다. 시험을 치고나서는

아무 문제 없는 풀이 같았다. 쉬운문제라 생각하고 빠르게 해결 후 다음 문제를 풀었다.

오만이 불러온 결과… 문제의 조건 하나를 놓쳤다. 아무리 쉬운문제라도 문제를 꼼꼼히 읽어 제약조건을 확실히 하고 다음 문제로 넘어가자.

2번

2번 역시 잘 풀었다고 생각했다. $_NC_2$ 조합을 구현해서 각각의 문자열을 비교해주면 끝.

하지만 역시 사소한 실수를 하고 말았다.

정답과 선택된 답안의 마지막 문자끼리 비교했을 때 cnt(정답이 아니면서 선택된 답안끼리 답이 같은 경우를 세어 주는) 값이 증가한 상태라면 최댓값을 갱신해주고 cnt=0으로 초기화 하여야한다.

3번

유일하게 제대로 푼 문제가 아닐까 싶다.

u_story 주인장 왈 : 투 포인터 알고리즘 이라고 한다. 몰랐는데 그렇다고 한다.

주어진 문자열 길이만큼 하나씩 계속 탐색하면서(오른쪽 포인터) 0의 개수를 세어주며 최댓값을 갱신한다. 그 0의 개수가 N 을 넘어 설 때, 왼쪽 포인터가 처음 만나는 0을 찾을 때까지 길이를 세어주고 오른쪽 포인터가 센 길이 - 왼쪽 포인터가 센 길이 를 갱신한다.

4번

주어지는 정보를 map 인 m에 담고 중복을 제거하기 위해 두 번째 정보 또한 다른 맵 m2에 저장해둔다.

m2에 저장해둔 정보로 mkey값과 비교해가며 key 값이 있다면 작업 명령대로 수행해주고, key값이 없다면 해당 key를 추가하여 작업을 수행한다.

이 때 문제에서는 key값을 대소문자 구분해서 사전식으로 정렬하라는 조건이 있었는데 mapkey 값을 ascii 코드 값을 기준으로 정렬을 해준다.

사전식 정렬이면 대문자가 먼자인가.. 소문자가 먼저인가..

제출을 하지는 못했지만 대문자가 먼저라면 pass, 그렇지 않다면 failed………….

5번

4번과 비슷한 문제 같다. key 값의 value을 자료형 set 에 저장시켜주었다. 나중에 tags 값들과 비교할 때 찾기 수월하려고..

그래서 tags와 겹치는게 많은 key 값을 카운팅하여 내림차순 정렬하고 카운팅값이 0이 아니라면 answer에 푸시하여 답을 출력하였다.

후기

뭔가 만족스러우면서도 만족스럽지는 못했던 시험이다. 시험이 끝나고 다시풀면서 좌절을 반복했지만, 예전같았으면 풀지도 못했을 문제들을 풀었고 예외도 많이 찾아낸것 같다. 물론 위 코드들이 정답이라고는 확신은 못하지만 어느정도 근접하지는 않았을까…

다음 시험은 실수를 최소한으로하고 빠르고 정확하게 풀어보도록하자.

혹시나 이 글을 보시는 분들이 있다면, 피드백을 댓글로 달아주셨으면 좋겠습니다. 다른 사람들의 풀이도 궁금하고 놓친부분이 있지는 않을까 매우 궁금하거든요 ㅎㅎ

댓글남기기