⭐ 코딩테스트/백준
[백준 1043번 C/C++] 거짓말
[백준 1043번 C/C++] 거짓말
2023.12.13[백준 1043번 C/C++] 거짓말 https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 해결전략 Set 처음 시도한 코드 - 테스트 케이스 모두 통과 #include #include #include using namespace std; int n, m; // n: 사람의 수, m: 파티의 수 int k; // k: 진실을 아는 사람의 수 set truth; // 진실을 아는 사람들을 담는 배열 int nVisiters; // nVisiters: 파티에 오는..
[백준 7662번 C/C++] 이중 우선순위 큐
[백준 7662번 C/C++] 이중 우선순위 큐
2023.12.12[백준 7662번 C/C++] 이중 우선순위 큐 https://www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 해결방안 우선순위 큐 priority_queue set 처음 시도한 코드 #include #include using namespace std; int t, k; priority_queue pQ1; priority_queue pQ2; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)..
[백준 7569번 C/C++] 토마토
[백준 7569번 C/C++] 토마토
2023.12.11[백준 7569번 C/C++] 토마토 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 해결전략 너비 우선 탐색 BFS 정답 코드 #include #include #include using namespace std; int dirY[4] = { -1, 0, 1, 0 }; int dirX[4] = { 0, -1, 0, 1 }; struct Coor { int ht, y, x; }; int m, n, h; vector v; /..
[백준 25682번 C/C++] 체스판 다시 칠하기 2
[백준 25682번 C/C++] 체스판 다시 칠하기 2
2023.12.09[백준 25682번 C/C++] 체스판 다시 칠하기 2 https://www.acmicpc.net/problem/25682 25682번: 체스판 다시 칠하기 2 첫째 줄에 정수 N, M, K가 주어진다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 해결전략 누적합, 동적 프로그래밍 Dynamic Programming DP 체스판 위에 k x k 크기의 정사각형을 놓았을 때, 정사각형 내의 체스판 칸 색깔을 바꿔서 모두 같은 색으로 만드는 데 필요한 최소 변경 횟수를 찾는다. 처음 시도한 코드 - 98%에서 실패 #include #include #include using namespace std; int n, m, k; vect..
[백준 1753번 C/C++] 최단경로
[백준 1753번 C/C++] 최단경로
2023.12.07[백준 1753번 C/C++] 최단경로 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 해결전략 Dijkstra 다익스트라 처음 시도한 코드 - 시간초과 #include #include #include using namespace std; int v, e; // v: 정점의 개수, e: 간선의 개수 int k; // k: 시작 정점 vector graph; struct Edge { int vertex; in..
[백준 16928번 C/C++] 뱀과 사다리 게임
[백준 16928번 C/C++] 뱀과 사다리 게임
2023.12.06[백준 16928번 C/C++] 뱀과 사다리 게임 https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 해결전략 너비 우선 탐색 BFS 정답 코드 #include #include #include #include using namespace std; int n, m; // n: 사다리 수, m: 뱀의 수 map ladder, snake; int ch[101]; int main() { ios::sync_wi..
[백준 18808번 C/C++] 스티커 붙이기
[백준 18808번 C/C++] 스티커 붙이기
2023.12.05[백준 18808번 C/C++] 스티커 붙이기 https://www.acmicpc.net/problem/18808 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 해결전략 구현 브루스포스 Brute Force 정답 코드 #include #include using namespace std; int n, m, k; // 노트북의 크기(n*m)와 스티커의 개수(k) int r, c; // 각 스티커의 크기(r*c) vector v; // 노트북 격자 vector sticker; // 각 스티커를 저장하기 위한 격자 i..
[백준 9019번 C/C++] DSLR
[백준 9019번 C/C++] DSLR
2023.12.04[백준 9019번 C/C++] DSLR https://www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 해결전략 구현 처음 시도한 코드 - 시간초과 #include #include #include #include #include using namespace std; vector ch; int D(int k){ return k * 2 % 10000; } int S(int k) { if (k == 0) return 9999; else return k ..
[백준 5430번 C/C++] AC
[백준 5430번 C/C++] AC
2023.12.03[백준 5430번 C/C++] AC https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 해결전략 구현 자료 구조 문자열 파싱 덱 처음 시도한 코드 - 시간초과 #include #include #include using namespace std; int t; string p; // 수행할 함수 int n; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> t; while(t--) { cin >> p; cin >> n; stri..
[백준 1107번 C/C++] 리모컨
[백준 1107번 C/C++] 리모컨
2023.12.02[백준 1107번 C/C++] 리모컨 https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 www.acmicpc.net 해결전략 구현, 브루트포스 Brute Force 정답 코드 #include #include #include using namespace std; int n, m; set broken; // num에 고장난 버튼이 포함되어 있는지 확인하는 함수 bool isPossible(int num) { if (num == 0) { return broken..
[백준 10026번 C/C++] 적록색약
[백준 10026번 C/C++] 적록색약
2023.12.01[백준 10026번 C/C++] 적록색약 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 해결전략 너비우선탐색 BFS 코드 #include #include #include using namespace std; int dirY[4] = { -1, 0, 1, 0 }; int dirX[4] = { 0, -1, 0, 1 }; int n; vector v; // 각 칸의 색을 기록 vector R, G, B; // R, G, B의 위치를 기록 /..
[백준 1744번 C/C++] 수 묶기
[백준 1744번 C/C++] 수 묶기
2023.11.28[백준 1744번 C/C++] 수 묶기 https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 해결전략 탐욕법, 그리디 알고리즘 Greedy Algorithm 정렬 많은 분기 조건 정답 코드 #include #include #include using namespace std; int n; long long answer; // 수열의 두 수를 묶었을 때 나올 수 있는 수열의 최대합 vector negative, zero, positive; int ma..