이번 주부터 스터디 그룹 모임에서는 코딩 테스트를 대비하여 프로그래머스 스쿨에 공개된 코딩 테스트 기출 문제들을 풀어보고 리뷰해보는 시간을 가졌다.
이번 글에서는 프로그래머스 스쿨 - [코팅테스트 연습] 문제들을 스터디 조원들과 리뷰해보는 과정에서 생각한 것들을 남겨본다.
"문자열 압축"문제에서 요구하는 것은 주어진 조건에 맞추어 압축된 문자열의 길이를 구하는 것이다.
그동안 이런 유형의 문제는 압축된 문자열을 만들어내고 len()
함수를 이용해 그 문자의 길이를 반환하는 방식을 사용했다.
하지만 이번에는 예전에 스터디 모임을 통해 조건에 맞추어 압축될 길이만 계산하여 시간과 공간 복잡도를 줄이는 다른 분의 풀이를 보고 배운게 있어서 그렇게 풀어보았다.
저장 공간 자체도 덜 사용하여 공간 복잡도를 줄이고 단순 숫자 계산을 하기 때문에 문자열을 만들고 다시 세는 추가 연산이 필요없도록 하여 시간 복잡도도 줄였다.
"오픈 채팅방"문제에서는 딕셔너리 형 자료구조를 이용해 시간, 공간 효율을 높일 수 있었다.
앞으로도 딱 필요한 계산과 메모리만 사용하도록 생각하는 습관을 들여봐야겠다.
"멀쩡한 사각형"문제와 "124 나라의 숫자" 문제는 수학적 지식이 더 있었다면 보다 간단하고 빠르게 풀 수 있는 문제였다.
알고리즘도 프로그래밍 언어로 논리적인 연산을 하게 하는 것이고 수학도 결국 숫자와 연산자로 논리적인 연산을 하는 것이다.
코딩 테스트 문제를 풀때 때로는 복잡한 코드보다 단순한 수학 계산식으로 문제들이 풀리는 경우들이 있었다. 수학적 지식이 문제 풀이에 필요한 패턴을 찾아내는 것에 도움이 되는 경우도 많았다.
특히나 데이터 관련 업무를 위해 공부하는 만큼 수학적 지식이 풍부한 것은 경쟁력을 높이는 일이 될 것이다.
그러므로 수학 공부를 하자.