기타/후기

2021 하반기 SW개발 신입 LINER 공개채용 코딩테스트 후기

VSFe 2021. 9. 11. 12:30

9/11 09:30 ~ 12:30 LINE 코딩테스트가 열렸다.

아우 팔아파

 

2020년 하반기/2021년 상반기의 시험과 비교해서, 구현 자체의 난이도는 높지 않았던 것 같다.

프로그래머스 및 라인의 정책상 문제 설명 및 코드를 올릴 수는 없지만, 작성할 수 있는 선에서 최대한 작성해보는걸로...

 

Q1

사용한 알고리즘: 브루트포스, 단순 구현

예상 난이도 (Solved.ac 기준): B2

 

단순 중첩 반복문을 사용하면 쉽게 해결할 수 있다.

정말 점수 주는 급의 문제라 긴 코멘트는 생략...

 

 

Q2

사용한 알고리즘: 해시

예상 난이도 (Solved.ac 기준): S3

 

단어의 글자수의 제한이 없다면 쪼금 어려울 수 있었는데, 검색어의 기준이 1글자로 제한되어서 난이도가 대폭 하락한 문제...

research 배열의 길이 만큼의 map/dict 배열을 만들어주고, 각 검색어가 매일 매일 며칠씩 검색되었는지 저장한다.

그리고 반복문 쫙 돌리면 끝~

 

파이썬 유저라면 a ~ z 까지 확인할 때 숫자로 인덱스 바꿀 필요 없이 ascii_lowercase를 import 해서 사용하면 훨씬 쉽게 구현할 수 있을 것이다.

 

 

Q3

사용한 알고리즘: 단순 구현

예상 난이도 (Solved.ac 기준): S2

 

문제 설명 제대로 안 읽어서 우선순위 큐를 활용한 스케쥴링 문제인가 했는데, 중요도가 합산된다는 것을 나중에 읽어서 시간 날려먹은 문제...

 

결과적으로 분류 번호가 1 ~ 100이기 때문에, 그냥 분류 번호를 한 번씩 스캔하면서 중요도가 높은 값을 꺼내주면 된다.

다만 시간이 중요한데, 데이터를 삽입할 때 반드시 현재 시간을 고려해야 한다.

 

만약 현재 시간 보다 같거나 작은 요청시간이 없다면? 이 경우에는 가장 빨리 요청이 들어오는 시간으로 현재 시간을 조정해 줘야 한다.

 

time = max(time, dt[0]) 같은 식으로 작성하면 쉽게 보정할 수 있다.

 

또한, 현재 시간에 따라 작업이 1개 요청될 수도, 여러 개 요청될 수도 있는데, 공통적으로 데이터가 앞에서부터 빠지기 때문에 골때릴 수 있다. 이 경우엔 덱을 사용해서 앞에서 데이터를 뺄 수 있게 하거나, 시간 기준으로 역순 정렬을 해서 뒤에서 부터 빼도록 하면 좋다. 

 

 

Q4

사용한 알고리즘: 소수 판별, 분할정복

예상 난이도 (Solved.ac 기준): G5

 

분할정복은 절대 안 나올 줄 알았는데, 나왔다...?

 

단순히 1, 2, 3, ... 으로 올려가면서 소수를 판단하기엔 배열의 길이가 1,000,000 이기 때문에, 맘 편하게 에라토스테네스의 체로 구하는게 속 편하다. (사실 데이터의 범위가 작기 때문에 될 것 같긴 한데 더 빠른게 좋으니까...)

 

분할정복 풀이 자체는 어렵지 않다. 다만 코테에서 분할정복 유형이 출제된 경우가 거의 없어 관련 문제를 풀어보지 못한 분들은 어려울 수 있다.

 

하지만 합병 정렬을 직접 작성해 본 적이 있다면, 정말 간단하게 풀지 않았을까 예상한다.

 

 

Q5

사용한 알고리즘: 그래프 탐색, 문자열

예상 난이도 (Solved.ac 기준): G4 ~ G3

 

A와 B가 유사하고, B와 C가 유사하면 A와 C로 유사하기 때문에, 유사한 관계를 양방향 그래프로 만들고 플러드 필을 돌리면 한 방에 해결되는 문제.

 

문자열 2글자 삭제를 어려워 할 수 있는데, 문자열 삭제 함수를 delete(string s1, string s2, int remain_cnt) 같이 만들어주면 딱 한글자 삭제하고 remain_cnt를 줄이는 방법으로 매우 쉽게 구현할 수 있다.

 

그 밖의 다른 부분은 죄다 문자열 처리라 스킵.

 

 

Q6

사용한 알고리즘: 해시

예상 난이도 (Solved.ac 기준): G5

 

날짜 부분을 조심하면 쉽게 구할 수 있다.

 

힘들게 문자열 계산을 하지 말고, 그냥 int로 바꿔버리면 k일 이내 계산이 굉장히 쉽다.

 

전체 구매 수를 담는 map/dict 하나, 각 유저가 특정 물건을 구매한 횟수를 담는 map/dict (중첩으로 짜면 된다.)를 하나 만들어주면 쉽게 짤 수 있다.

 

 

------

총평: 2020 하반기 > 2021 상반기 (1교시) > 2021 하반기 라고 본다.

서류 없이 코테부터 응시 가능해서 난이도가 오를 것이라고 예상했는데, 의외다?

 

필기에서 다 걸러낼려나...