카카오 알고리즘 문제 - 캐시
카카오 인턴십 코딩테스트 - 성격유형 검사하기
두 큐의 합을 같게 만들기
정렬의 근본적인 문제는 아이템의 콜렉션들에 대한 순서에 대한 것이다.항목들을 주문하는 방법은 전적으로 비교방법에 따라 다르다. 서재에 있는 책무더기를 분류하는 작업을 하는 경우 작성자의 성을 기준으로 구성할 수 있다. 그러나 책을 빨리 운반해야하는 경우 처음에는 책의
처음에 풀었던 풀이.효율성이 매우 낮고 부끄러운 코드다.아무리 생각해봐도 sum을 이렇게 남발하면 난리가 날 것 같다고 생각해서 다른 코드를 찾아보다가 아래의 방식으로 구현할 수 있다는 것을 알아냇다.인덱스를 이용하여 미리 pivot을 빼준다.pivot을 미리 빼놓은
해당 문제를 풀면서 두가지 테스트 케이스를 통해 주의해야할 점 두가지를 알아냈다.파이썬 버전 3.6 이후부터는 입력한 순서를 보장하는 딕셔너리가 기본으로 제공되지만 이전 버전은 순서를 보장하는 딕셔너리가 기본으로 제공되지 않아서 orderedDict을 사용하여야 한다.
링크드 리스트에 대한 기본적인 이해를 확인하는 문제이다.문제에 대한 해결방법은 주석을 확인하길 바란다.코드를 대략적으로 설명하자면 위의 그림과 같은데 (글씨체가 ㅎㅎ;)prev를 초기에는 None으로 설정하여 아무것도 없음을 알려준다.이는 이전의 노드를 알수없는 첫번째
알고리즘에서 시간복잡도는 주어진 문제를 해결하기 위한 연산 횟수를 말한다.일반적으로 파이썬 프로그램에서는 2000만번~ 1억번의 연산을 1초의 수행시간으로 예측할 수 있다.알고리즘의 로직을 코드로 구현할 때 , 시간 복잡도를 고려한다는 것은 입력값의 변화에 따라 연산을
자료구조는 데이터를 효율적으로 저장,접근,수정하기 위한 그릇이다. 코딩 테스트에서는 각 문제에 주어진 입력 데이터의 형태와 사용해야 하는 알고리즈에 따라 적절한 자료구조를 선정해 사용하는 것이 매우 중요하다.기본 자료구조인 배열과 리스트는 비슷한 점도 많지만 다른 점도
투포인터는 2개의 포인터로 알고리즘의 시간복잡도를 최적화한다. 단순하게 구현할 수 있는 문제이다.
원래 코딩테스트를 파이썬으로 준비하는데 백엔드 직무의 경우 자바로 코테를 요구하는 경우가 있어서.. 지금까지 공부했던 알고리즘 문제들을 자바로 다시 푸는 과정을 기록한다.
슬라이딩 윈도우 알고리즘은 2개의 포인터로 범위를 지정한 다음,범위를 유지한 채로 이동하여 문제를 해결하는 방법이다. 투포인터 알고리즘과 매우 비슷하고 원리도 간단하기 때문에 문제를 통해서 알아보겠다.
스택은 삽입과 삭제 연산이 후입 선출로 이루어지는 자료구조이다. 후입선출은 삽입과 삭제가 한 쪽에서만 일어나는 특징이 있습니다.
정렬 정렬 알고리즘 버블 : 데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식 선택 : 대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식 삽입 : 대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식 퀵 : pivot 값을 선정해 해당값을 기준으로 정렬하는 방식 ...
DFS로 들어가기 전, 그래프의 표현에 대해서 먼저 알아보고 시작하겠다.구래프 관련 문제 풀이를 하기 위해서는 그래프를 어떻게 구현해야하는지 알아야한다.
N * N 개의 벌통이 정사각형 모양으로 배치각 칸의 숫자는 벌통에 있는 꿀의 양을 나타냄, 이때 주어진 과정으로 벌꿀을 채취하여 최대한 많은 수익을 얻으려고 한다.두명의 일꾼 이 있다 . 이때 꿀을 채취할 수 있는 벌통의 수 M 이 주어지고 가로로 연속되도록 M 개
창용 마을에는 N명의 사람이 살고 있다. 사람은 편의상 1번부터 N번 사람까지 번호가 붙어져 있다고 가정한다. 두 사람은 서로를 알고 있는 관계일 수 있고, 아닐 수 있다. -> 양방향 관계두 사람이 서로 아는 관계이거나 몇 사람을 거쳐서 알 수 있는 관계라면,
백준시는 N개의 구역으로 나누어져 있고, 구역은 1 - N 번까지 번호가 매겨져 있다 구역의 번호를 인덱스로 이용해서 사용하자구역을 두개의 선거구로 나누어야하고, 각 구역은 두 선거구 중 하나에 포함되어야 한다. 선거구는 구역을 적어도 하나 포함해야한다. 선거구의 조
최초 각 미생물 군집의 위치와 군집 내 미생물의 수, 이동 방향이 주어진다. 약품이 칠해진 부분에는 미생물이 배치되어 있지 않다. 이동방향은 상, 하, 좌, 우 네 방향 중 하나이다. 각 군집들은 1시간마다 이동방향에 있는 다음 셀로 이동한다. 미생물 군집이 이동
보호 필름의 성능을 검사하기 위해 합격기준 K라는 값을 사용한다.충격은 보호 필름 단면의 세로 방향으로 가해지므로, 세로 방향 셀들의 특성이 중요하다.단면의 모든 세로방향에 대해서 동일한 특성의 셀들이 K개 이상 연속적으로 있는 경우에만 성능검사를 통과하게 된다.성능검
대표적인 DP 문제로 두가지 버전으로 문제를 해결할 수 있다.기억해두어야하는 유형일것같아서 기록한다.
스도쿠 백트래킹
간단한 백트래킹 문제
파티다익스트라 기본 문제이 문제에서 조금 헷갈렸던 부분은 파티를 마치고 돌아가는 걸 구현하는 부분이었다.
조건이 많이 걸려있는 DFS 탐색 문제탐색 문제의 대부분은 BFS로 풀어서 초반에 허우적 거렸다.이 문제의 핵심은 주어진 조건들을 어떻게 처리하느냐에 있는 것 같다.
벽돌깨기여러번 풀어도 구현이 빡쎈 문제이런느낌의 문제는 이런식으로 구현하고, 여기에서 탐색을 이렇게 활용하면 되겠구나를 느낀 문제였다.
브루트 포스 계열의 문제 너무 어렵게 생각하지 말고 단순하게 생각하자 ! 덤으로, 마름모 모양이 BFS를 통해 구현될 수 있는 것을 명심하자 (이 부분은 다른 문제에서 두고두고 사용될 수 있는 포인트 일 것 같다)
구현이 어려웠던 문제머리로는 이해하겠지만 코드로는 나오지 않았다고 해야할까.과정이 조금 복잡해서 단계별로 나누어서 구성했다.
시키는데로 하면 되는 문제코드 중복이 조금 있어서 이후에 리팩토링하는게 필요할것같다..ㅎㅎ;조건을 그대로 구현하면 되는문제다.
하라는데로 하면 되는 문제 문제는 문제를 제대로 안읽는 나!처음에 주어진 오셀로 게임의 첫 세팅 상태를 고려하지 않고 코드를 구성하다가 틀렸다.이후에 세팅을 해주고 8방향을 다시 세팅해준 다음 문제를 해결했다
간단한 탐색문제문제를 보자마자 문제를 어떻게 풀어야하는지 감이 왔다.단,문제를 풀면서 주의할 점이 몇부분 있는데 그 부분을 짚어보려고 한다.
이번엔 진짜로 합격해야한다..는 굳건한 마음으로 지금까지 공부해왔던 내용들을 정리하는 글을 작성해보고자 한다. 정리가 필요한 내용을 꼽아보자면 다음과 같다. 1.템플릿처럼 내 머릿속에 저장해야하는 코드들 정리하기 (BFS,DFS,Union Find,최소신장트리
개요 dfs로 조건처리를 해주는 문제 풀이방식은 여러가지가 될 수 있다. dfs를 이용한 풀이, 재귀 과정에서 조건을 처리해주는 방법이다 미리 땅을 파놓고 dfs를 돌리는 풀이. 이 방법이 오히려 더 낯설었다 난.. 문제분석 등산로를 만드는 규칙은 다음과 같다.
문제조합의 조합을 생각하는 문제, 재료의 시너지를 조금 고민하게 되는 문제였다.문제는 두가지 방식으로 풀었다. 크게 다르지는 않고,재료의 시너지를 구하는 방법이 조금 다르다.일단, 문제를 분석해보자.식재료 N개가 주어지고,두명의 요리사가 식재료를 반씩 나누어 선택한다.
개요 문제링크 처음에 보고 조금 당황했던 문제 그냥 단순하게 생각하고 접근하면 풀리는 쉬운 문제였다. 문제분석 길이가 주어지면 해당 길이에 맞는 빈칸(연속된 빈칸을 하나의 빈칸이라고 하자)을 구하면 되는 문제이다. 낱말풀이를 할 때 흔히 볼 수 있는 그
문제링크오랜만에 풀어본 달팽이 문제.좌표배열을 사용하는 것까지는 접근했지만 아쉽게 틀린 문제.나중에 복기 필수 !
문제링크발상의 전환을 하면 단순하게 풀리는 문제생각을 거꾸로 해보자! 2로 적혀있는 골인지점으로 도달할 수 있는 첫 지점을 알아내는 문제이다.이 문제는 매우매우 단순하다!
문제링크직관적으로 생각하자!오늘은 N명의 사람이 자격을 얻었다.진기는 0초부터 붕어빵을 만들기 시작하며, M초의 시간을 들이면 K개의 붕어빵을 만들 수 있다.
문제링크이렇게 풀어도 되나..? 싶었던 문제개개인마다 풀이는 다양할 것 같지만 링크드 리스트가 생각나서 링크드 리스트를 구현해서 풀어보았다.처음에는 셔플을 여러번 하는 줄 알았는데 그건 아니었고 그냥 한번한 결과값을 출력해주면 되는 것이었다.더불어 짝수일 경우와 홀수일
게임을 진행할 차례인 학부에서 출전한 선수들 N명이 존재한다. 학생들의 앞 탁자에는 N개의 깃발이 청색이 위로 백색이 아래로 보이도록 놓여있다. 이때 출전한 선수 중 첫 번째 선수는 N개의 깃발