라인 코딩테스트 기출문제 - lain kodingteseuteu gichulmunje

2021.03.20 라인 코딩 테스트

평소에 가끔 네이버, 라인, 카카오 같은 기업들 입사 공고가 뜨면 자소서가 필요없거나, 짧은 자소서만 요구하는 기업들의 코딩테스트에 종종 응시하고 있다.

지금까지 세번? 네번? 정도 응시한 것 같은데 점점 바뀌는 경향은 아무래도 문자열 문제의 빈도가 높아지는 것이다. 파이썬을 못하면 코딩테스트 치기 어려울거야 라는 메세지를 기업들이 던지고 있는 것 같다.

120분간 4문제를 푸는 테스트, 120분간 큰 문제에 대한 소문제 3문제를 푸는 테스트로 두 개의 테스트로 이루어져있다.

CPP가 익숙해서 풀다가 도저히 안되겠어서 파이썬으로 바꾸는데 시간을 많이 썼다.

그래도 첫 번째 테스트에서 4문제 중 3문제를 풀고도 40-50분이 남았는데 방향을 잡으니까 10분 남짓 남아서 손을 못댔다. 앞에 세문제도 풀긴 했지만 예외처리를 못해서 100점은 아닐 것 같다.

두 번째 테스트는 커맨드라인 CLI에서 명령어가 들어오면 문자열 파싱해서 옵션 처리하는 문제였는데, 3학년때 C언어로 리눅스시스템프로그래밍에서 구현해 본 적이 있어서 방향은 금방 잡았다.

근데, 방향은 잡더라도 역시 문자열 처리를 많이 해야해서 파이썬을 사용했다.

문제는 예를들어 ls -al, grep -r "string" . 이런 명령어들이 있다면 올바른 명령어 구조를 갖는지 검사하는 프로그램 구현이었다.

문제를 유출 할 수 없어서 간단하게만 설명하면

1번 테스트

1번

테이블을 가져와서 점수화하는 문제

python의 split으로 문자열 tokenize하고 list에 추가해서 index를 점수삼아 연산만 해주면 되는 문제였다.

2번

잘은 기억안나는데 올바른 아이디가 되기위해 제거해야하는 문자 수를 세는 문제였나?
문자열이 주어지면 문자열 내에서 조건에 부합하지 않는 문자들의 수를 세야했다.
isalpha(), isdigit(), 등등을 사용해서 풀었고, 여러 특수기호들이 포함되면 안되어서 in을 사용했다.

python의 in과 slicing 기능은 정말 강력한 것 같다.

3번

코로나 상황이라서 그런지 방안에 사람이 들어오고 나가는 순서가 주어지고 반드시 만날 수 밖에 없는 사람의 수를 세는 문제가 나왔다.

나가는 순서를 queue처럼 두고 가장 최신에 들어온 사람이 queue의 front와 같으면 pop해주면서 count했다.

4번

트리를 구성하고 순회해야 하는 문제였는데 트리를 많이 구현해보지 못해서 어려웠다. 좀 더 연습이 필요한 부분이다.

2번 테스트

위에서 설명한 큰 틀을 가지고 세세한 제약조건을 바꾸며 세 문제를 풀어나가야 했다.

앞에 '-'가 붙는 옵션과 뒤에 따라오는 argument를 구별 할 때 단지 -가 붙는지 체크하고 다음 -가 나올 때까지 argument list에 문자열을 추가한 뒤 함수에 넘겨줬는데, 이보다 좋은 구현 방법이 무조건 있을 것이다.

총평

전체적으로 카카오보다는 난이도가 낮지만 마냥 쉽지는 않았다. 예외조건 걸어줄 것들도 있고 아직 파이썬이 미숙해서 어려운 부분도 있었다.

궁금한게

for i in range(0, 10):
	print(i)
    	i+=1

예를 들어 위 처럼 구현하면 i가 두 번씩 더해지면서 인덱스가 옮겨질 줄 알았는데 파이썬에서는 이게 안된다. 그래서 이와 같은 조작을 하려면 while을 사용하는데 for을 쓰면서 내부에서 조건이 맞으면 인덱스를 옮기는 방식은 불가능한 것인가 ??

여튼 재밌었고 내년에 실제 입사 테스트할 때 테스트를 보면 잘 되면 좋겠다

P.S

  • 불합격했습니다.
  • 1차 3문제, 2차 3문제 풀었다고 생각했지만 급하게 푸는 바람에 세부사항 처리를 못해서 떨어진 것 같습니다.

CODE

  • https://github.com/Kimjaeseop/line_codingtest/tree/main/2021.03

✍ 내 생에 첫 코딩 테스트였던 라인 신입 공채에 대해서...

지난 3월 초 라인에서 SW 개발 신입 LINER 공개채용을 시작했다.

나는 게임어쩌구 부서의 서버 개발 포지션에 지원을 했다. 

자소서를 제출하고 얼마 뒤 메일로 다음과 같이 안내를 받게 되었다.

라인 코딩테스트 기출문제 - lain kodingteseuteu gichulmunje

신기하게도 하루에 두 차례의 시험이 진행된다고 했다.

코딩테스트와, 단계별 코딩테스트로 나누어 시험을 진행한다고 했는데, 

솔직히 시험을 보기 전까지는 무슨 말인지 감이 잘 안왔다. 

👨‍💻 코딩 테스트

오후 1시부터 3시까지 치러진 1차 코딩 테스트에서는, 4개의 알고리즘 문제가 출제되었다. 

솔직히 시험을 본 지 2주가 훌쩍 지나서 문제는 잘 기억이 안 난다.

그래도 그때 느꼈던 것들을 기록해보려고 한다.

나는 올해부터 시작해 지난 1, 2월 두 달간 알고리즘을 공부했다.

1월에는 프로그래머스 문제들을 Level 2까지 풀었고

2월에는 백준에서 그래프 탐색 문제만 오지게 풀었다. 

그러나 프로그래머스에서 마주치게 되는 카카오 기출문제들은 여전히 나에게는 너무나 어려웠고, 

실제 코딩 테스트에는 이런 문제들이 나온다고 생각하니 

상반기에는 안되겠다 라는 생각을 가지고 있었다(...)

그래서 이번 라인 신입 공채는 뭔가를 기대하기 보다는 단지 경험삼아 지원한 것이었다.

그리고 네카라 중에 라인이 제일 어렵다는 소문을 어딘가에서 들었었기에(? 

어쩌면 한 문제도 못 풀 수도 있겠다는 생각을 하고 있었다.

그런데???

이번 시즌에 문제가 쉽게 나왔던 건지, 아니면 원래 이런 건지 모르겠는데.. 

생각보다 문제들이 어렵지 않았고, 집중해서 금방 해결할 수 있는 문제들이었다.. 

물론 올솔이라는 것은 아니다. . . 🙂

나는 4문제 중 3문제를 풀었고, 마지막 문제는 트리구조의 문제였는데 풀다가 시간이 다되어서 제출도 못하고(...) 끝나버렸다. 

끝나고 들었던 생각은,

"마지막 문제를 못 풀 줄 알았더라면 앞의 3문제나 꼼꼼히 검토할걸.."

라인은 히든 케이스가 있기 때문에, 제출한 코드가 정답인지는 알 수 없다. 

따라서 한 문제 더 풀어보겠다고 끙끙대는 것 보다는 해결한 문제를 꼼꼼히 확인하는 것이 더욱 도움이 될 수 있다는 것.

다음 번에는 시간 안배를 잘해서 정답률을 높여보도록 하자 ! 

👨‍💻 단계별 코딩 테스트

단계별 코딩테스트에서는 하나의 공통된 주제를 가지는 3문제가 출제되었다.

이게 무슨 말이냐 함은..

  • 1번: 주어진 조건에 따라 프로그램을 구현한다.
  • 2번: 1번에서 구현한 프로그램을 ~~이런 조건에서도 돌아가도록 확장시켜봐라.
  • 3번: 2번에서 응용한 프로그램있지? 그러면 거기서 ~~이런 기능도 만들어봐.

약간 요런 느낌이라 해야하나..?

1번을 해결하고 그걸 2, 3번에서 확장시키는 형식이라고 볼 수 있겠다. 

그래서 이 단계별 코딩테스트는 단순히 알고리즘 문제라기보다는, 기능 구현이 메인인 프로젝트성?의 느낌이었다.

1번은 프로그램 전체를 구현해야했기 때문에 다소 시간이 걸렸고,

2,3번에서는 1번에서 작성한 코드를 복붙한 뒤 추가 조건에 적합하게 메서드를 추가하는 등의 행동만 하면되었기 때문에 시간이 오래 걸리진 않았다. 

3문제를 모두 풀긴 하였으나 역시나 정답인지는 알 수 없었고,

시간이 부족해 코드 리더빌리티 또한 많이 신경쓰지 못했다. ㅠ ㅠ


라인 코딩테스트 기출문제 - lain kodingteseuteu gichulmunje

예상했던 결과였지만 첫 패배(?)에 조금 씁쓸하긴 했다.

더 강해져서 돌아온다 . . !