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

profile
오만가지에 관심이 있는 사람

3개의 댓글

comment-user-thumbnail
2021년 4월 20일

안녕하세요 제가 3번에서 막혔었는데 혹시 구현 어떻게 하셨는지 아직 기억하실까요 ??

1개의 답글