본문 바로가기

BaekJoon125

2573 : 빙산 (C++) 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 좀 코드가 긴 것 같긴하지만 열심히 잘 풀었따! #include #include #include using namespace std; int N, M, years; int map[300][300]; bool visit[300][300]; int dx[4] = {1, -1, 0, 0}; int dy[4] = {0, 0, 1, -1}; queue q; void bfs(int i, int j) { visit[i][j] = true; q.push({i, j}); .. 2021. 2. 18.
2579 : 계단 오르기 (C++) 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 오랜만에 다이내믹 프로구래밍을 풀어보았따... 다른공부도 해야하는데 맨날 백준만 잡고있다니... #include using namespace std; int arr[301]; int dp[301]; /* 문제 접근 방법 : n번째 계단을 밟는 경우는 두가지 방법 밖에없다 1. n번째를 밟고 n-2번째 계단을 밟는 경우 2. n번째를 밟고, n-1번째와 n-3번째를 밟는 경우 문제에 나온 예로 6번째 계단을 밟는 경우에는 4번째 계단을 밟는 경우와 5, 3번째 계단을 밟는 경.. 2021. 2. 18.
20551 : Sort 마스터 배지훈의 후계자 (C++) 20551번: Sort 마스터 배지훈의 후계자 지훈이는 Sort 마스터다. 오랫동안 Sort 마스터 자리를 지켜온 지훈이는 이제 마스터 자리를 후계자에게 물려주려고 한다. 수많은 제자들 중에 후계자를 고르기 위해서 지훈이는 제자들에게 문제 www.acmicpc.net lower_bound 함수를 참조해서 만든 함수로 푼 문제이다. #include #include using namespace std; int grayLower_bound(int* arr, int N, int temp) { int left = 0; int right = N; int cnt = 0; // 탐색하려는 수가 없을 때 -1을 리턴하기 위해 카운트 변수 선언 int mid; while(left < right) { mid = (left .. 2021. 2. 18.
7562 : 나이트의 이동 (C++) 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 간만에 재미있게 푼 BFS문제이다. 나이트가 시작하는 위치를 큐에 넣고 도착하려는 위치까지 움직이는 수를 칸에 더하며 도착할 때까지 계속 BFS를 수행하면 된다. #include #include #include using namespace std; int map[300][300]; bool visit[300][300]; int l; int X, Y; int dx[8] = {2, 2, 1, 1, -1, -1, -2, -2}; int dy[8] = {1, -1, 2,.. 2021. 2. 17.
1966 : 프린터 큐 (C++) 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 약간 대충대충 내맘대로 막 짠것 같은 코드 #include #include #include using namespace std; bool compare(int a, int b) { // 내림차순으로 정렬하기 위한 함수 return a > b; } int main() { int testCase; cin >> testCase; for(int t = 0; t > N >> M; int arr[N].. 2021. 2. 17.
10815 : 숫자 카드 (C++) 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 바로 전 문제(숫자 카드 2)와는 다르게 중복 값이 없는 문제여서 그냥 바로 이분탐색으로 쉽게 풀리는 문제이다. #include #include using namespace std; int main() { int N, M; scanf("%d", &N); int arr[N]; for(int i = 0; i < N; i++) { scanf("%d", &arr[i]); } sort(arr, arr + N); // 이분탐색을 수행하기위해 정.. 2021. 2. 17.
10816 : 숫자 카드 2 (C++) 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net upper_bound 함수는 탐색하려는 수보다 큰 값의 인덱스를 리턴하고 lower_bound 함수는 탐색하려는 수의 첫 시작 인덱스 값을 리턴한다. #include #include using namespace std; int arr[500000]; int main() { int N, M; scanf("%d", &N); for(int i = 0; i < N; i++) { scanf("%d", &arr[i]); } sort(arr,.. 2021. 2. 17.
2108 : 통계학 (C++) 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 너무 막 푼듯 #include #include using namespace std; int main() { int N; cin >> N; int arr[N]; int many[8001]; // 최빈값을 찾아내기 위한 배열 fill(many, many + 8002, 0); // 모든 배열 0으로 초기화 double ave = 0; for(int i = 0; i > arr[i]; many[arr[i] + 40.. 2021. 2. 16.
10866 : 덱 (C++) 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 연결리스트로 덱을 구현하였다. #include #include using namespace std; typedef struct Node{ int data; struct Node *next; struct Node *prev; }; typedef struct Deque{ int count; Node *front; Node *rear; }; void push_front(Deque *deque, int data) { Node *node = new Node.. 2021. 2. 16.