백엔드/JAVA_코딩테스트

JAVA_코딩테스트 준비_(구현/시뮬레이션)

반 불혹 2022. 11. 28. 22:46

구현 / 시뮬레이션 

우리가 코딩테스트를 볼 때 유형 중에 구현, 시뮬레이션 유형이 있다. 

일단, 알고리즘을 푼다는 것은 근본적으로 "내가 이 문제를 내가 생각반 방식대로 프로그래밍으로 구현 할 수 있다."를 보여주는 것이다.

일단 뭐든지 목표기능을 구현하는 코딩테스트를 출체 하는목적은 

"본인이 선택한 프로그래밍 언어의 문법을 정확히 알고 있어야 하고, 문제 요건에 부합하는 코드를 빠르게 작성하는것"이 목표이다.

뭔소리냐고?

그냥 하나 오래걸리거나, 조건 많은거 던져 두고 그거 만들게 시킨다 이말이다.

그런데, 조건이 많아서 이것저것 문법을 사용해야 한다거나, 코드 길이가 줄줄줄길어져서 말 그대로 빡 구현을 해야 한다 이말이다. 

구현/ 시뮬레이션 문제는 코딩체스트 지문을 잘 읽고 놓치는 조건없이 모두 코드로 구현하는것이 최우선 목표이다.

시뮬레이션 문제는 과정과 조건이 제시되는데, 해당 과정ㅇ을 거친 결과가 무엇인지 확인하게 되는 유형이다. 

보통 문제에서 제시한 조건대로 코드를 작성하면 문제가 해결 되지만, 길고, 조건이 세세하게 많아서 코드로 치는게 쉬운일이 아닐 수 있다. 

구현 / 시뮬레이션 문제는 "자주 연습해서 익숙해지는 것" 이외에는 딱히 방도가 없다. 

적어도 for문이나 재귀함수 등 개념을 꽉 잡고 있어서 떠오른 아이디어에 바로 적용 할수 있어야 한다 이런 말이다. 

구현 문제 예시로, 우리가 만약 조이스틱을 만든다고 하자. 

왼쪽키를 누르면, 왼쪽으로, 오른쪽을 누르면 오른쪽, 아래를 누르면 아래로..... 

단순 이동부터 메뉴 , 설정을 여는 키, 점프키 등등 다른 기능을 조건에 따라 하나 하나 만들어 주어야 한다는 것이다. 

우리는 이 과정에서 (이렇게많은 것들을 구현해야 하는 과정에서)스스로 길을 잃지 않도록 주의히고, 자주 연습해서 정답을 내야 한다는 것이다. 

솔직히, 알고리즘이 어렵고, 구현하기 까다롭고, 기타 등등의 문제가 있을 수 있다. 

하지만 구현은 자신의 연습량 문제라고 생각한다. 

코딩테스트 5문제면 적어도 1~2문제는 구현이라고도 한다. 

열심히 해서 1~2문제는 꼭 맞을 수 있는 사람이 되자