본문 바로가기

분류 전체보기170

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.
10026 : 적록색약 (C++) 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 오랜만에 풀어보는 그래프탐색 문제 한 개의 dfs함수를 만들어서 문제를 해결 해 보고 싶었지만 결국 두개로 나누어 만들어 문제를 해결했다. 한개로 합쳐 만들 수 있을까? #include #include #include using namespace std; char map[100][100]; bool visit[100][100]; bool visitColor[100][100]; int N; int colorWeak = 0; int normal = 0; int.. 2021. 2. 12.
18111 : 마인크래프트 (C++) 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 어려웠다... #include using namespace std; int main() { int N, M, B; cin >> N >> M >> B; int map[N * M]; int maxi = 0; int mini = 256; for(int i = 0; i > map[i]; maxi = maxi > map[i] ? maxi : map[i]; mini = mini > map[i] ? map[i] : mini; } int .. 2021. 2. 12.
1920 : 수 찾기 (C++) 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 입력이 최대 N이 10만개, M이 10만개 들어올 수 있으므로 하나하나 전부 탐색하면 100억의 연산을 수행해 2초인 시간제한을 넘어가 버린다. 그래서 이분탐색을 실행하여 계산을 해줘야하므로 이분탐색으로 문제를 해결하였다. #include #include using namespace std; int main() { int N, M; scanf("%d", &N); int arr[N]; for(int i = 0; i .. 2021. 2. 11.