본문 바로가기

알고리즘

코딩 테스트를 여행하는 개발자를 위한 모든 준비법 개요제목으로 어그로를 끌어보고 싶어서 이렇게 작성했지만...이 글은 그저 제가 코테를 준비하기 위해서 환경을 세팅한 내용을 정리한 글입니다. 저는 현재 당장의 취업에 있어서 코딩테스트를 통과할 지 말지 확신이 없는 흔한 골레기입니다.. 마지막으로 백준을 풀어본 게 언제인지도 기억이 안납니다.그래도 돈을 벌어야하고 취업은 해야하잖아요?주변 동기들은 졸업도 전에 취업하는 친구들이 몇몇 보이기 시작하고,개발자 취업은 계속 어렵다고 하고 정작 내세울 포트폴리오가 하나도 없는 것 같고,AI는 이제 나보다 코딩 훨씬 잘하는 것 같고,이 세상에 내가 왜 필요한 지 모르겠고.... 이런 상황에서 코딩테스트 공부 준비를 본격적으로 해봐야겠다고 생각한 것은 용기 있는 결정이 아니라상황에 이끌려 도달한 종점일지도 모르겠습니.. 더보기
백준 26156: 나락도 락이다 아이디어 & 코드 아이디어 뒤에서부터 보면서 'K', 'C', 'O'를 찾으면서 각 인덱스에서 "OCK"를 만들 수 있는 경우의 수를 구한다 그리고 값이 'R'인 모든 인덱스에서, 그 인덱스에서 1. "OCK"를 만들 수 있는 경우의 수와 그 인덱스의 2. 앞에 있는 문자의 개수만큼 2의 거듭제곱을 한 값을 구한다. 그리고 1과 2를 곱해 나온 값을 모두 더하면 답이 나온다 쉽게 이해하려면 R인 인덱스 기준으로 보면 된다 1. R인 인덱스 뒤에서 "OCK"를 만들 수 있는 경우의 수 -> 그 R을 가지고 ROCK을 만들 수 있는 경우의 수 2. 앞에 있는 문자의 개수만큼 2의 거듭제곱을 한 값 -> R 앞에 있는 문자 모두를 넣거나 넣지 않거나 하는 경우의 수 1과 2를 곱하면 그 R을 기준으로 가능한 ROCK으로 끝나는.. 더보기
백준 20955 아이디어 문제에서 말하는 사이클이 없는 그래프인 트리를 위한 edge의 삭제, 추가 횟수를 구하려면 다음과 같은 순서를 거쳐야 한다 1. 주어진 edge 중에서 사이클을 생성하는 edge를 다 쳐낸다 2. 주어진 edge로 만들어지는 그룹의 개수를 구한다 3. 쳐낸 edge 수 + 그룹 개수 - 1이 답이 된다 1번은 MST의 Kruskal 알고리즘에서 나오는 union find 알고리즘을 통해서, 2번은 DFS로 구하면 된다 union find 알고리즘을 처음 구현해봐서 포스팅하게 되었다. 코드 #define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; int N, M; vector E; bool visited[100000]; int .. 더보기