카카오 테크캠퍼스 코딩테스트 기록

1 minute read

Published:

매번 회피만하다가, 이번에 카테캠을 신청하면서 드디어 첫 실전 코테를 해보았다.
생각보다 할만했고, 그동안 열심히한것을 보상받은 것 같아서 정말 기분이 좋았다.
내가 풀었던 문제들을 정리해보고자 한다.

1번 문제 : 종이 K개 이상 울리는 첫 시간을 찾기.

난이도 : 백준 기준 브론즈 3 예상 사용 알고리즘 : 브루트포스

종의 개수와, 종이 울리는 주기가 주어진다.
종의 주기가 1~10 밖에 없어서 1부터 모든 초마다 완전탐색해서
처음으로 종이 K개 이상 울릴때의 시간을 출력했다.

2번 문제 : n명의 키를 정렬한 후 특정 키의 사람을 O(1)에 접근하기

난이도 : 백준 기준 실버 5 ~ 브론즈 1 예상
사용 알고리즘 : 정렬

모든 인원의 키를 정렬한 후, 주어지는 모든 인덱스 위치의 키를 출력.

3번 문제 : 시작지점 to 목적지의 최소 나이트 이동횟수 출력

난이도 : 백준 기준 골드 4
사용 알고리즘 : BFS

체스판의 나이트는 장애물이 없는 장소로만 이동가능.
나이트의 이동경로를 모두 방향 벡터로 만들어두고 BFS 해서 해결.

4번 문제 : 배열의 모든 원소마다, 좌측에서 가장 가까우며 더 큰 원소의 인덱스를 O(nlogn)안에 구하기

난이도 : 백준 기준 골드 3~4
사용 알고리즘 : 큐(정석), 점프 포인터(내 풀이)

그냥 풀면 O(n^2)나온다. 정석: 방문한 원소의 값을 모두 큐에 넣어두고, 현재 방문한 값보다 큰값이 나올때까지 모두 pop하면
배열의 크기 = 내앞에 있는 큰놈 포함의 개수

내 풀이 : 배열의 원소 = 좌측에서 가장 가까운 큰 원소의 인덱스.
우에서 좌로 각 위치마다 재귀적으로 구하기 O(nlogn)
ex) 크면 좌측을 저장., 작으면 그 원소의 다음 큰 원소 위치랑 비교한 결과 저장


올솔브에 1시간 10분 정도만에 50분을 남기고 여유롭게 클리어했다!
근데 잠을 깨려고 먹었던 에너지 드링크가 변수…
소변 마려워 정말 미쳐버릴것 같아서 테스트 케이스만 돌려보고 허겁지겁 뛰쳐나왔다.
제발 틀리지 않았기를 기도 중이다…