728x90
반응형

백준 207

[C/C++] 백준 - 17626번 : Four Squares

https://www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net 문제 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 12으로 표현할 수도 있다. 역사적으로 암산의 명수들에게 공통적으로 주어지는 문제가 바로 자연수를 넷 혹은 그 이하의 제곱수 합으로 나타내라는 것이..

BOJ/DP 2021.08.30

[C/C++] 백준 - 2294번 : 동전2

https://www.acmicpc.net/problem/2294 2294번: 동전 2 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주 www.acmicpc.net 문제 n가지 종류의 동전이 있다. 이 동전들을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그러면서 동전의 개수가 최소가 되도록 하려고 한다. 각각의 동전은 몇 개라도 사용할 수 있다. 사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다. 입력 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의..

BOJ/DP 2021.08.30

[C/C++] 백준 - 1167번 : 트리의 지름

https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 문제 트리의 지름이란, 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것을 말한다. 트리의 지름을 구하는 프로그램을 작성하시오. 입력 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 매겨져 있다. 먼저 정점 번호가 주어지..

BOJ/BFS\DFS 2021.08.30

[C/C++] 백준 - 11048번 : 이동하기

https://www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 www.acmicpc.net 초기화를 통해 해결할 수 있는 간단한 문제이다. #include #include #include #include #include #include #include #include #include #include #include #define INF 987654321 #define CUNLINK ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)..

BOJ/DP 2021.08.30

[C/C++] 백준 - 1644번 : 소수의 연속합

https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 에라토스테네스의 체와 투포인터를 이용해서 해결해야하는 문제이다. 소수 찾는 알고리즘은 에라토스테네스의 체가 가장 효율적이기 때문에 사용했고, 연속 되는 부분의 합을 확인해주어야하기 때문에 투포인터를 사용했다. 그리고 소수 자기 자신이 연속된 수가 될 수 있기 때문에 생각을 해야할 게 2라는 소수는 연속된 수이면서 자기 자신이기 때문에 마지막에 예외처리를 해줘야 맞는다고 뜬다 #include #include #include #include #include #include #include #include #include..

BOJ/투포인터 2021.08.27

[C/C++] 백준 - 20922번 : 겹치는 건 싫어

https://www.acmicpc.net/problem/20922 20922번: 겹치는 건 싫어 홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 $K$개 이하로 들어 있는 최장 연속 부분 수열 www.acmicpc.net 투포인터를 이용해서 할 수 있는 문제이다. 1. 맨 처음에는 시작점과 끝점을 둘다 idx 0으로 둔다 (왼쪽 포인터를 st, 오른쪽 포인터를 en이라 칭하겠음) 2. 조건에 맞게 en이 N보다 작으면서 아직 K개 이하로 등장했다면 오른쪽 포인터를 오른쪽으로 옮겨준다. 이걸 while반복문으로 조건에 걸릴 때까지 늘려준다. while(en < N && visited[v[en]] < K) { v..

BOJ/투포인터 2021.08.26

[C/C++] 백준 - 2150번 : Strongly Connected Component (SCC Algorithm)

https://www.acmicpc.net/problem/2150 2150번: Strongly Connected Component 첫째 줄에 두 정수 V(1 ≤ V ≤ 10,000), E(1 ≤ E ≤ 100,000)가 주어진다. 이는 그래프가 V개의 정점과 E개의 간선으로 이루어져 있다는 의미이다. 다음 E개의 줄에는 간선에 대한 정보를 나타내는 두 정 www.acmicpc.net 문제 방향 그래프가 주어졌을 때, 그 그래프를 SCC들로 나누는 프로그램을 작성하시오. 방향 그래프의 SCC는 우선 정점의 최대 부분집합이며, 그 부분집합에 들어있는 서로 다른 임의의 두 정점 u, v에 대해서 u에서 v로 가는 경로와 v에서 u로 가는 경로가 모두 존재하는 경우를 말한다. 예를 들어 위와 같은 그림을 보자...

[C/C++] 백준 - 14621번 : 나만 안되는 연애

https://www.acmicpc.net/problem/14621 14621번: 나만 안되는 연애 입력의 첫째 줄에 학교의 수 N와 학교를 연결하는 도로의 개수 M이 주어진다. (2 ≤ N ≤ 1,000) (1 ≤ M ≤ 10,000) 둘째 줄에 각 학교가 남초 대학교라면 M, 여초 대학교라면 W이 주어진다. 다음 M개의 www.acmicpc.net 문제 깽미는 24살 모태솔로이다. 깽미는 대마법사가 될 순 없다며 자신의 프로그래밍 능력을 이용하여 미팅 어플리케이션을 만들기로 결심했다. 미팅 앱은 대학생을 타겟으로 만들어졌으며 대학교간의 도로 데이터를 수집하여 만들었다. 이 앱은 사용자들을 위해 사심 경로를 제공한다. 이 경로는 3가지 특징을 가지고 있다. 사심 경로는 사용자들의 사심을 만족시키기 위해..

[C/C++] 백준 - 1647번 : 도시 분할 계획

https://www.acmicpc.net/problem/1647 1647번: 도시 분할 계획 첫째 줄에 집의 개수N, 길의 개수M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 집 www.acmicpc.net 최소 스패닝 트리로 해결 가능한 문제이다. 마을을 2개로 분리하고, 각 마을에는 최소 1개의 집이 존재하여야 한다고 한다. 마을에 2개 이상의 집이 있어야 한다고 하면 문제가 복잡해지는데 이 문제는 1개의 집만 있으면 되기 때문에 최소 길이의 간선으로 각 집을 하나의 마을로 묶어주고, 가장 긴 간선의 길이를 빼서 분리시켜주면 된다. #include #inclu..

[C/C++] 백준 - 12100번 : 2048(Easy)

https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 복잡해보이는 시물레이션 문제이다. 4가지의 방향이 존재하고 모든 경우의 수를 따져보아야 최대값을 알 수 있으므로 백트래킹으로 완전탐색을 해야겠다고 생각했다. 보드 안 블록을 옮기는 과정 구현하는게 가장 까다로웠다. 블록은 위, 아래, 양 옆으로 이동이 가능하며 총 4가지 방향이 이동가능하다. 2048게임을 해보면 알겠지만, 1. 어느 한 방향으로 이동했을 때 한 블록이..

BOJ/시물레이션 2021.08.25
728x90
반응형