Programming/Algorithm 4

2021 카카오커머스 백엔드 개발자 공개채용 1차 코딩테스트 후기

어... 아무래도 코딩테스트에 썩 적합하지 않은 언어들만 가능해서 그런지 (데이터 분석 분야를 제외하면, FE - JS, BE, Android, iOS - Java, (일부 Kotlin) iOS - Swfit) 난이도 자체는 어렵게 나오지 않았다. 덕분에 25분컷... 다만 기존 카카오 코딩테스트와 달리 채점 결과를 보여주지 않기 때문에, 함정 문제가 있었다는 것은 주의해야 할 것 같았다. #1 Topic: 카운팅 정렬을 약~~~간 변형한 값 담기 예상 난이도 (Solved.ac 기준): S5 ~ S4 상품을 바꾸는거에 초점을 맞추지 말고, 자기가 원하는걸 못 받는 사람들에 포커스를 맞춰보자. 바꾸는건 자기들 알아서 할테고, 어떻게든 열심히 바꾸면 존재하는 선에선 잘 바꿀 수 있을 것이다. 즉, 주어진 ..

[KAKAO BLIND 2020] - 가사 검색

이 문제의 정해는 트라이로 알려져 있는데, 개인적으로는 코테를 준비하기 위해 트라이를 배우는 것은 권장하지 않는다. 카카오 블라인드에서 트라이로 풀 수 있는 두 문제는 모두 트라이가 아닌 다른 방법으로 해결할 수 있고, 코드도 훨씬 짧다. 실제로 코딩테스트 과외를 할 때도 절대 이 문제를 트라이로 풀 생각을 하지 말라고 말했고, 아래 풀이는 수업을 하면서 실시간으로 작성한 코드이다. 어차피 가능한 경우는 AAA??나 ??AAA 같이, 앞과 뒤에 ?가 붙는 문자들이다. 그런데 생각해보자. AAA??는 AAAAA, AAAAB, .... AAAZY, AAAZZ가 가능할 것이다. 그렇다면 이것은 AAAAA ~ AAAZZ 의 사이에 들어있는 문자를 모두 검색하면 되는 것이고, 다시 말해서 (AAAZZ의 upper..

백준 문제 풀이 (2.1 ~ 2.8)

시간은 안나지만 최대한 시간을 투자해서 문제를 풀려고 노력하고는 있다.... 푼 문제 중에서 플레급 문제만 적어보았다. #9345 - 디지털 비디오 디스크 (DVDs) 재밌는 세그먼트 트리 문제였다. 임의의 칸 두개를 지정하고, 해당 범위의 값을 구한다고 가정해보자. 순서에 상관없이 값만 존재하면 OK이기 때문에, 구간을 대표할 수 있는 값을 찾아야 할 것이다. 간단하게 생각해보면 구간합/최댓값/최솟값이 있을텐데, 곰곰히 생각해보면 최댓값/최솟값 두개만 있으면 해결할 수 있다. 예를 들어, 2~6번째 칸의 최댓값이 6이고, 최솟값이 2라면 그 사이의 값은 반드시 3, 4, 5라는 것이 보장된다. 따라서 최댓값 세그먼트 트리, 최솟값 세그먼트 트리를 각각 만들어서 해결하면 된다. #16975 - 수열과 쿼..

<백준 17071> 숨바꼭질 5

문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 500,000)에 있고, 동생은 점 K(0 ≤ K ≤ 500,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 동생은 항상 걷기만 한다. 동생은 항상 매 초마다 이동을 하며, 이동은 가속이 붙는다. 동생이 이동하는 거리는 이전에 이동한 거리보다 1을 더한 만큼 이동한다. 즉, 동생의 처음 위치는 K, 1초가 지난 후 위치는 K+1, 2초가 지난 후 위치는 K+1+2, 3초가 지난 후의 위치는 K+1+2+3이다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생..