알고리즘/백준 단계별로 풀기 (12.26 ~ 12.31) 36

C++ 사다리 조작

www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net I번 선수의 경로를 설정하는 것과 사다리를 선택하는 것과 헷갈려서 좀 시간이 걸린 문제 ㅜㅜ 코드 자체는 진짜 몇 줄 필요하지 않다. 1시간 20분정도 걸려서 다 풀고 신나는 마음으로 제출했는데,,, 틀렸다!!ㅜㅜ 아무리 봐도 완벽한데; 의심가는 부분은 DFS 부분 항상 1차원 VISITED 배열을 만들어서 DFS로 조합을 선택하는 건 잘하는데, 2차원으로 가면 응용이 안된다. 원래 내 코드는 DFS로 사다리..

백트랙킹 - 백준 14899번 스타트와 링크

IDEA 보자마자 아 조합구현이네? 생각했다. 1 ~ 8까지 있으면 조합을 통해 1,4,6,7 을 고르고 이걸 start라고 생각하면 선택받지못한 사람들은 link가 된다. start 내 사람들을 2명씩 골라서 점수를 내고, link도 똑같이 해 점수의 차를 비교하면 된다. n명 중 n/2명을 고르는 것도 조합으로 구현하고 n/2명 중 2명을 고르는 것도 조합으로 구현하려고 했는데 그러면 지저분해져서 어차피 2명이니까 투포인터로 합을 구했다. 선택 된 사람과 선택받지못한 사람을 어떻게 나누지? 에 대해 많이 고민했다. temp라는 벡터에 넣어주고 1 ~ n 까지 temp안에 없으면 link 팀 있으면 start팀 이렇게 구성을 하다 보니까 시간이 더 걸릴 거 같더라,,,, 생각을 해보니 visited가 ..

DFS & BFS - 백준 1697번 숨바꼭질

www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net IDEA 아 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 최근에 본 네이버부캠 코테에서 같은 유형의 문제가 나왔었는데,,,,,ㅜㅜ 못풀었다. 생소한 느낌이라서 DFS나 BFS로는 맨날 2차원좌표만 접하다보니까 2차가 아닐때의 BFS나 DFS가 생소했었나보다,,,,, 익숙해질겸 이후 비슷한 문제를 추천받아 백준 5014번 스타트링크 (www.acmicpc.net/problem/5014) 연습..

힙 - 백준 11286번 절댓값 힙

www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net IDEA 아래 두가지 조건을 만족시키는 자료구조의 기능을 구현해주면 된다. 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 우선순위 큐를 활용해 구현하였다. 우선순위 큐에 배열을 넣어준 후 , 정렬 기준을 따로 정의해두었다. 절댓..

큐,덱 - 백준 1021번 회전하는 큐

www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net IDEA 문제에서 양방향 순환 큐라는 얘기를 한다 -> 양방향 큐 = 덱 이라고 생각하고 문제를 풀었다. 아래와 같은 3가지 조건을 수행한 후 2,3번을 수행하는데 얼마나 걸렸는지 구하는 문제다. 첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다. 👉 내가 맨 처음에 착각했던 문구다. 원소를 뽑아내는 행위는 맨 앞에서만 할 수..

브루트포스 - 백준 1018번 체스판 다시 칠하기

www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net IDEA 50 * 50 짜리를 8 * 8로 쪼개 완전탐색을 진행해도 십만번이 조금 넘기때문에 주어진 시간 안에 돌아갈 수 있다고 판단했다. 체스판의 구성은 왼쪽 위가 W냐 , B냐에 따라서 달라진다. 그래서 나는 왼쪽 위가 W면 WHITE 배열 , B면 BLACK배열이라고 두었다. WHTE 배열 - 홀수번째 행 & 홀수번째 열 : W , 홀수번째 행 & 짝수번째 열 : B 짝수번째 행 & 홀수번째 열 :..