[백준] 2164 카드2 - 큐
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/2164 🚩 조건입력으로 N을 받음. 1N장의 카드가 있고, 1번이 제일 위에 위치하고 차례대로 정렬되어 있음.카드가 한 장 남을 때까지 다음과 같은 동작을 반복함. "우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다."가장 마지막에 남게 되는 카드를 구해라.  🚩 접근2 -> N이 주어지고 1부터 차례대로 push한다고 하면, 선입선출이므로 queue로 구현하자  🚩 시행착오구현은 쉽다. 그치만 queue의 메소드들을 헷갈리지 말자.// 은근 헷갈리는 메소드들..queue.push_back(); // Xqueue.push(); // Oqueue.pop(); /..
[백준] 1992 쿼드트리 - 재귀함수
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/1992  🚩 조건0,1로만 구성된 영상을 압축해라. 모두 0으로만 되어 있으면 압축 결과는 "0". 모두 1로만 되어 있으면 압축 결과는 "1".섞여 있으면 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래, 이렇게 4개의 영상으로 나누어 압축하고, 결과를 차례대로 괄호 안에 묶어서 표현NxN 크기의 영상이 주어지고, 1  🚩 접근4개로 나누고 또 나누고... => 재귀함수로 구현하자  🚩 시행착오난 재귀함수에 매우 약하다... 멍청이야..... ㅠㅠㅠㅠ 처음엔 아래와 같이 재귀함수를 구현했고, 이 때 출력초과가 나왔다.void check(int sx, int sy, int n) { int def = m[sx][sy]; ..
[프로그래머스] 두 원 사이의 정수 쌍 - 수학
·
💻 Algorithms/프로그래머스
[ 문제링크 ]https://school.programmers.co.kr/learn/courses/30/lessons/181187 🚩 조건두 원 사이의 공간에 x,y 좌표가 모두 정수인 점을 세어라 (원 위의 점도 포함)  🚩 접근 인 (a,b)를 구하자 🚩 시행착오 1. 시간초과 기존 코드#include #include using namespace std;int a,b;long long solution(int r1, int r2) { long long answer = 0; for(int i = 1; i=r1*r1)) answer++; } } answer += r2-r1+1; answer *= 4; return a..
[백준] 11403 경로 찾기 - 그래프, DFS
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/11403 🚩 조건가중치 없는 방향 그래프 G가 주어짐(i,j)에 대해, i에서 j로 가는 길이가 양수인 경로가 있는지 구해라경로가 있으면 1, 없으면 0으로 + 인접행렬 형식으로 출력   🚩 접근그래프 -> vector로 구현재귀적으로 구현하자 (ex. 4번 갈 수 있으면 4번이 갈 수 있는 1,2번도 갈 수 있고 1,2번이 갈 수 있는 ...)근데 이걸 어떻게 구현하지? 재귀의 탈출 조건을 모르겠다  🚩 시행착오vector vec[100] != vector> vec; vector v1[100]; //vector 100개를 가지는 배열v1[0].push_back(1);vector> v2; //vector를 요소로 가지는 가변..
[프로그래머스] 연속된 부분 수열의 합 - 투 포인터
·
💻 Algorithms/프로그래머스
[ 문제링크 ]https://school.programmers.co.kr/learn/courses/30/lessons/178870 🚩 조건비내림차순(=오름차순) 수열 sequence와 k가 주어지면, 합이 k인 부분 수열을 찾아라부분 수열 중 가장 길이가 짧은 것을 찾되, 길이가 같으면 먼저 등장하는 것을 찾아라5 ≤ sequence의 길이 ≤ 1,000,0005 ≤ k ≤ 1,000,000,000 / k는 항상 부분수열의 합으로 나올 수 있는 정수  🚩 접근for문으로 앞 원소부터 더해나가다가 합이 k보다 커지면 앞 원소를 제거해나가며 답을 찾자!=> 이게 투 포인터의 개념  🚩 시행착오sum>k 일 때 제일 앞 원소를 제거하는데, 이 때 sum==k 가 될 수도 있다는 점을 간과함. 그래서 제거..
[백준] 1927 최소 힙 - 우선순위 큐
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/1927  🚩 조건최소 힙을 구현해라  🚩 접근힙은 STL의 priority_queue를 통해 구현할 수 있다.#include # 기본형은 최대 힙이다.priority_queue pq;# 최소 힙을 구현하려면 아래와 같이 작성해야 한다.priority_queue, greater> pq;   🚩 시행착오계속 시간초과가 발생했다.. 그래서 main문 맨 앞에 ios::sync_with_studio(0); cin.tie(); 도 작성해서 넣었음에도 여전히 시간초과가 발생했다. 구글링 결과.. 내가 저 코드를 잘 못 알고 있었던 것이었다ㅎ.. 충격cie.tie(NULL); 로 작성해야 한다!  💻 코드 (C++)#include #in..
[백준] 11780 플로이드2 - 플로이드 경로복원
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/11780 🚩 조건모든 도시의 쌍에 대해 필요한 비용의 최솟값을 구해라각 최솟값에 대해 경로를 구해라  🚩 접근1 -> 플로이드 알고리즘 이용하자! (삼중for문 쓰면 됨) 2 -> 플로이드 알고리즘의 경로복원        (nxt table 만들어서 경로 갱신 될 때마다 nxt도 갱신)  🚩 시행착오 경로를 출력하는 방법에 대해 고민을 많이 했는데(재귀함수, while문 등등) 잘 안 풀렸다. 근데 방법의 문제가 아니라 nxt table을 보는 방법이 틀렸던 것이었다.ㅠ  nxt table이 위와 같으면 2에서 1로 가는 경로는 아래와 같이 생각해야 한다.nxt[2][1] = 4 (2에서 1로 최소비용으로 가려면 4를 거쳐야 ..
[백준] 11404 플로이드 - 플로이드
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/11404 🚩 조건1. 모든 도시의 쌍에 대해 필요한 비용의 최솟값을 구해라  🚩 접근1 -> 플로이드 알고리즘 이용하자! (삼중for문 쓰면 됨)  🚩 시행착오처음에 전역변수로 배열을 선언하고 아래와 같이 초기화했는데, 이러면 첫번째 원소만 해당 값으로 지정된다고 한다. => 특정값으로 초기화하려면 for문 등의 방식을 사용해야 한다.int table[101][101] = { 100001 }; // 잘못된 초기화 방식계속 98%정도에서 "틀렸습니다"가 나왔다.. 그 이유는 "비용은 100,000보다 작거나 같은 자연수이다."라는 조건 때문에 위처럼 배열의 초기값을 100,001로 설정했기 때문이었다. => 도시의 최대값이 10..
[백준] 16398 행성연결 - MST, 우선순위 큐
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/16398  🚩 조건제국 내 모든 행성을 연결그 유지비용을 최소화 🚩 접근1,2 -> 최소신장트리 => Prim 알고리즘을 이용하자! 🚩 시행착오플로우 관리 비용의 범위가 "1 ≤ Cij ≤ 100,000,000"이므로, 처음에 ans를 int로 선언하여 "틀렸습니다"가 나옴 => ans를 long long으로 선언하여야 함  💻 코드 (C++)#include #include #include #include #include using namespace std;priority_queue, vector>, greater>> pq; //cost, a, bvector> adj[1001]; //cost, bbool check[1001]..
[백준] 1766 문제집 - 위상정렬, 우선순위 큐
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/1766 🚩 조건가능하면 쉬운 문제부터 풀어야 한다.먼저 푸는 것이 좋은 문제가 있는 문제는, 먼저 푸는 것이 좋은 문제를 반드시 먼저 풀어야 한다.  🚩 접근1 -> 우선순위 큐 (최소 힙으로 쓰려면 아래처럼 선언)priority_queue, greater> qu;2 -> 위상정렬  💻 코드 (C++)#include #include #include #include using namespace std;int indegree[32001];priority_queue, greater> qu;vector adj[32001];vector ans;int main() { cin.tie(0); ios::sync_with_stdio(..