2021 하반기 SW개발 신입 LINER 공개채용 코딩테스트 후기
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 하반기 라고 본다.
서류 없이 코테부터 응시 가능해서 난이도가 오를 것이라고 예상했는데, 의외다?
필기에서 다 걸러낼려나...