백준(C, C++)/골드 24

백준 2668: 숫자 고르기 [C언어], 정보올림피아드

https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net #include int n, cnt, lis[111]; // 입력, 답, 입력 int cycle[111]; // 사이클 유무 int visited[111]; // 1~N 중 방문한 곳 int value[111]; // 입력 값 중 방문한 곳 void dfs(int num) { if (visited[num]) return; // 이미 방문한 곳이면 더 방문할 필요가 없다 visited[..

백준 17070: 파이프 옮기기 1 [C/C++], 삼성 코딩 테스트

https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net #include #define fastio() ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); using namespace std; int N; int home[22][22]; // 집 int dp[22][22][3]; // 메모이제이션 void input(); void solve(); int dfs(int y, int x, int w..

백준 12100: 2048(Easy) [C언어], 삼성 코딩 테스트

https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net #include int N, ans; int ori[22][22]; // 입력 맵 int map[22][22]; // 이동 맵 int vis[22][22]; // 이미 합쳐진 블록 int res[6]; // 어디로 이동 할 것인 가? void input(); // 입력 void back(int c); // 5번 이동 void move(int n); // 상하좌우 이동 ..

백준 17144: 미세먼지 안녕! [C/C++], 삼성 코딩 테스트

https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net #include using namespace std; #define fastio() ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); int N, K, T, purifier, ans; int maps[55][55]; int dy[4] = {1, 0, -1, 0}; int dx[4] = {0, 1, 0, -1}; void input(); void init(); ..

백준 20056: 마법사 상어와 파이어볼 [C/C++], 삼성 코딩 테스트

https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net #include #include #include #define fastio() ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); using namespace std; int N, M, K, ans; int dy[8] = {-1, -1, 0, 1, 1, 1, 0, -1}; // 방향을 나타냅니다. int dx[8] = {0,..

백준 14503: 로봇 청소기 [C/C++], 삼성 코딩 테스트

https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net #include using namespace std; int wall[55][55]; // 벽 int clean[55][55]; // 청소 유무 int dy[4] = {-1, 0, 1, 0}; // 북 동 남 서 int dx[4] = {0, 1, 0, -1}; int ry, rx; int way; int cnt = 1; int n, s; void input(); void solve(int y, ..

백준 3078: 좋은 친구 [C/C++]

https://www.acmicpc.net/problem/3078 3078번: 좋은 친구 첫째 줄에 N과 K가 주어진다. (3 ≤ N ≤ 300,000, 1 ≤ K ≤ N) 다음 N개 줄에는 상근이네 반 학생의 이름이 성적순으로 주어진다. 이름은 알파벳 대문자로 이루어져 있고, 2글자 ~ 20글자이다. www.acmicpc.net #include #include using namespace std; int n, k; long long ans; // IntMax n >> k; for (int i = 0; i > s; lis[i] = s.size(); // 길이를 입력한다. } } void solve() { for (int i..

백준 15961: 회전 초밥 [C/C++]

https://www.acmicpc.net/problem/15961 15961번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 3,000,000, 2 ≤ d ≤ 3,000, 2 www.acmicpc.net 코드: #include using namespace std; int n, d, k, c, cnt, ans, l, r; int lis[3030303], sushi[3030]; void input() { cin >> n >> d >> k >> c; for (int i = 0; i > lis[i]; } void solve() { l = 0; r = k - 1..

백준 2357 최솟값과 최댓값 c++

https://www.acmicpc.net/problem/2357 2357번: 최솟값과 최댓값 N(1 ≤ N ≤ 100,000)개의 정수들이 있을 때, a번째 정수부터 b번째 정수까지 중에서 제일 작은 정수, 또는 제일 큰 정수를 찾는 것은 어려운 일이 아니다. 하지만 이와 같은 a, b의 쌍이 M(1 ≤ M ≤ 100 www.acmicpc.net 2개의 세그먼트 트리를 만들면 풀 수 있는 문제였습니다 #include #include #define fastio() ios::sync_with_stdio(0),cin.tie(nullptr),cout.tie(nullptr); using namespace std; typedef long long ll; ll n, m, from; ll maxarr[10000000..