현재 코틀린으로 코테를 준비하고 있습니다.
근데 자료구조를 사용할 때에 있어서(예를들어 스택이나 큐)
직접 구현하여 사용하는게 나을까요?
아니면 구현되어 있는 자료구조를 공부하여 활용하는 방법이 나을 까요?
예를들어
스택을 활용하여 큐 구현하기 문제같은경우
스택을 싱글링크드리스트를 사용해서 먼저 구현한 후에 큐를 구현하는 방식으로
아래와 같이 풀어봤는데,
다른 풀이들을 살펴보니 다들 Java.util의 Stack을 사용해푼거 같더라구요
제가 생각한 서로의 장단점은 다음과 같아 보입니다.
직접 구현:
장점 - 내부 자료구조 까먹어도 사용 가능
- 인터뷰시 내 생각을 더 자세하게 보여줄 수 있음
단점 - 더 복잡한 자료구조가 필요할 경우 시간이 많이 소요되고 어려울 경우 구현 못하는 경우가 발생할 여지 있음
내부 자료구조 사용:
장점 - 복잡한 자료구조의 경우 시간 단축,
- 실제 작업에서도 도움이 됨 (아마?)
단점 - 까먹으면 거의 사용 불가
이렇게 직접 구현할 때와 내부 자료구조를 활용하는 방법중 어떤 방법이 더 좋은 방법이라고 생각되시나요?
허용/금지에 따라 기대하는 수준이나 보려는 부분이 다를 것 같네요
현업자 기준 외울려고 외운게 아니라 손에 익었을거 같은데, 코테 기준으론 그때그때 구현을 실수없이 하는 것보다 외우시는게 나을 것 같네요.
외워 보겠습니다!
특별한 이유가 없다면 자바가 나을텐데요.
그러고 코테에서 1-2문제로 합/불이 결정날텐데...
저거 구현할 시간에 알고리즘 생각해서 한두번 더 제출하는게 이득이라 생각합니다.
제가 코테용으로 준비 할수 있는 언어는 파이썬, 코틀린, 자바 선택지중에
뭔가 코테용 언어는 고수준 언어가 유리한 거 같은 느낌이 있어서 파이썬, 코틀린 중 하나,
웹 백엔드 취업 준비중이어서 자바, 코틀린 중하나
교집합이 코틀린 이어서 코틀린을 선택했었습니다...
딱히 뭔가 엄청난 큰 이유는 없었어요
또 코프링 사용하는 회사도 취업 하고 싶은 생각도 있구요
저도 시간에서는 불리할 거라곤 생각 합니다만, IDE를 못 쓰는 상황에서는 임포트 부터 쉽지 않을 수도 있겠다 싶어서요...
말씀하신거 처럼 파이썬이나 코틀린이 유리한 부분이 분명히 있지만 원하시는 회사에서 코테로 그 언어를 허용할지는 별개의 문제입니다.
따라서 범용 적인 언어로 준비하는걸 추천드리구요.
경우에 따라서는 사전에 가능한 언어가 공유되지 않는 경우도 있구요.
ide도 일부 신입 코테는 불가능하지만 대부분은 가능하다고 알고 있습니다.
코테 준비는 백준, 프로그래머스, 리트코드 등등 가서 풀어보시면 됩니다.
자바 자료 구조를 까먹어서 못 쓸거라는게 저로썬 좀 이해가 안 되는데요. 아무쪼록 잘 준비하시길 바랍니다.
음 그런 파이썬, 코틀린, 자바 셋중엔 어떤 언어가 가장 나을까요? 혹시 가능하시면 추천 부탁드립니다.
코틀린이 그래도 메이저 언어라고 생각했는데 생각보다 마이너 한가 봅니다 ㅠㅠ
자료구조를 까먹어서 못 쓴다기 보다,
예를들어 큐를 사용할때 예를들어 peek()이라던가 특정 메서드명이 갑자기 생각이 안날때라면 구현해서라도 사용해야하지 않나 그런 느낌이었습니다.
어렵다기보다 진짜 갑자기 어떤 메서드명이 생각 안날때 있지 않나요? ㅠㅠ 저만 그럴수도...
평상시에 option + enter 로 해버리니...
출제 의도도 이미 있는 스택을 가지고 "큐를 구현"하는 데에 중점을 둔 거지 밑바닥부터 쌓아 올리라는 게 아닐 겁니다.
일반적인 코테는 어떤 '입력'이 주어졌을 때 원하는 '출력'이 나오느냐가 중점입니다. 물론 직접 스택과 큐를 구현해 본 경험이 있다면 면접 때 도움은 될 겁니다.
그리고 시간이 된다면 코드 형식을 좀 정리하시는 게 좋겠네요.
타입 선언 시 콜론 뒤에 공백이라든가 불필요한 'this' 사용, non-null assert(!!) 등 눈에 걸리는 게 많습니다.
공백같은건 평소에 IDE가 다 처리 해줘서 신경을 잘 안썼더니 IDE를 쓰지 못하는 상황에서는 신경을 못 썼네요, 앞으로 신경 쓰겠습니다.
this같은 경우는 예전에 리트코드에서 this를 안썼더니 진행이 안되는 경우가 있었어서 그 뒤로 습관적으로 this를 썼었는데 지금 지우고 다시 해보니 this를 안써도 잘 되네요...
(!!)은 저도 코드를 작성하면서 고민을 조금 했던 부분입니다. while 조건안에 stack이 not empty면 당연히 stack.top도 null이 아닌데! 하면서 !!로 처리해 버렸습니다. 제가 코틀린에서 null을 처리하는 부분에 있어서 부족한건지, 어떻게 처리하는 방법이 더 좋을지 의견 주시면 감사하겠습니다.
다 구현하는건 말도 안됩니다.
보통 코딩테스트는 주어진 문제를 얼마나 잘 풀어내는건지를 보는 거라서
특별히 문제를 제공하는 측에서 요구사항이 없는 이상 기본적으로는 언어에서 제공하는 자료구조를 가지고 푸시면 됩니다.
단순히 코테를 잘 보고 싶다면 기본 자료구조들로 연습을 하시면 됩니다.
ACM ICPC 류의 순수 알고리즘 테스트는 기본 자료구조에도 제한을 걸어서 일일히 다 만들어야 하는 경우도 있어요.
코딩테스트와 알고리즘 테스트의 구분이 좀 애매하긴 하지만.. 여튼 그렇습니다.