알고리즘 49

[백준 10828] 스택

스택 문제 설명 정수를 저장하는 스택을 구현하고 주어진 명령어를 처리하여 나오는 결과를 한 줄 씩 출력한다. 첫 줄에 명령어 실행 횟수를 입력받는다. 명령어는 다음과 같다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 알고리즘 테스트 케이스 수 만큼 명령어를 읽어 들이고 실행한다. #include #include #include #include #inclu..

Algorithm 2021.07.28

[백준 10845] 큐

스택 문제 설명 정수를 저장하는 큐을 구현하고 주어진 명령어를 처리하여 나오는 결과를 한 줄 씩 출력한다. 첫 줄에 명령어 실행 횟수를 입력받는다. 명령어는 다음과 같다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 알고리즘 테스트 케이스 수 만큼 명령어를 ..

Algorithm 2021.07.28

[백준 11659] 좌표 정렬하기

좌표 정렬하기 문제설명 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 알고리즘 테스트 케이스 수를 입력 받고 수만큼 반복하여 2차원 좌표를 입력 받는다. algorithm 헤더의 sort 함수를 사용하여 정렬한다. #include #include #include #include #include using namespace std; bool comp(const pair & a, const pair&b) { if (a.first == b.first) return a.second < b.second; return a.first < b.first; } int main() { int num = 0; c..

Algorithm 2021.07.28

[백준 10866] 덱

스택 문제 설명 정수를 저장하는 덱을 구현하고 주어진 명령어를 처리하여 나오는 결과를 한 줄 씩 출력한다. 첫 줄에 명령어 실행 횟수를 입력받는다. 명령어는 다음과 같다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약..

Algorithm 2021.07.28

[백준 5430] AC

AC 문제 설명 AC라는 언어에 R, D 두가지 함수가 존재한다. R은 뒤집기, D는 첫 번째 숫자를 지운다. 이때 입력으로는 테스트 케이스 수 (T)가 주어지고, 숫자의 수, 배열 [x1,x2,...]이 주어진다. 각각 함수 실행 결과를 출력 시킨다. 이때 배열에 숫자가 없는데 D를 실행시키면 error를 출력시킨다. 알고리즘 필요한 입력들을 받고, 배열을 deque에 넣어준다. 이때 배열에 넣을 때 숫자의 범위는 1부터 100까지인 것을 감안하고 처리하여 넣는다. R과 D를 차례차례 읽어서 실행한다. R의 경우 반복문 내에서 실행하면 시간초과가 발생하므로 bool type flag를 not을 사용하여 처리한다. D의 경우 deque의 비어있는지 여부를 확인하고 비어있는 경우 error를 출력한다. 비..

Algorithm 2021.07.28

[백준 2667] 단지번호 붙이기

단지번호 붙이기 문제설명 첫 줄에 주어지는 입력은 지도의 크기(5 node; vector v; for (int i = 0; i > x; for (int j = 0; j < node; j++) graph[i][j] = x[j]-'0'; } for (int i = 0; i < node; i++) { for (int j = 0; j < node; j++) { if (graph[i][j] == 1 && visited[i][j] == 0)//방문 가능한 노드로 재귀 { DFS(i, j); all++;//전체 단지수 측정 v.push_back(cal); } cal = 0;//단지당 집 수 초기화 } } cout

Algorithm 2021.07.27

[백준 1012] 유기농 배추

유기농 배추 (DFS) 문제설명 dfs알고리즘을 사용한 문제로 노드간의 연결된 관계를 파악하여 그 갯수를 세는 문제이다. 알고리즘 순서 테스트케이스(T)와 밭의 가로세로 크기(M,N), 간선의 갯수(K)를 입력 받는다. 연결관계를 2차원 graph에 1로 표현한다. 예) 2,3 -> graph[2][3]=1 graph를 반복해서 연결관계가 1이고 현재 방문하지 않은 노드를 방문한다. dfs함수에서 방문했다는 visited[x][y]=1 표현으로 방문 여부를 체크하고 현재 노드에서 상,하,좌,우 연결관계를 재귀적으로 확인한다. 재귀적인 확인을 마친뒤 다시 main 함수로 돌아오면 answer값을 증가시킨다. 여러번 테스트를 위해서 vector에 값을 담아 놓았다. #include #include #incl..

Algorithm 2021.07.27

[백준 1260] DFS와 BFS

DFS와 BFS문제설명기본적인 DFS&BFS를 구현한다.이때, 정점의 갯수(N) 간선의 갯수(M), 그리고 시작노드(V)를 입력 받는다.dfs와 bfs를 수행하고 난 노드 방문 순서를 출력시킨다.알고리즘 순서DFS의 경우 현재 방문한 노드의 인덱스를 매개변수로 전달반복문을 통해서 방문하지 않았고 연결되어 있는 노드를 재귀적으로 방문한다.BFS의 경우도 동일하고 queue에 현재 방문한 노드를 넣는다.반복문을 통해서 queue가 비어있을 때 까지 맨 앞의 노드를 끄내고, 그 노드와 인접했지만 방문하지 않은 노드를 방문한다.#include #include #include #include #include using namespace std;#define MAX 1001int graph[MAX][MAX];int..

Algorithm 2021.07.27

[프로그래머스] 큰 수 만들기(Greedy)

큰 수 만들기 문제설명 K만큼 문자열의 숫자를 지워서 가장 큰 수를 만든다. number 문자열을 통해 input이 정해진다. K개의 수를 지워서 number의 순서 변환 없이 가장 큰 수를 만들어내야한다. 첫 시도!! 처음에는 가장 작은 수 들을 지워서 만들면 된다고 생각했는데, 그런 경우에는 자리수를 고려하지 않아서 가장 큰 수가 생기지 않는다. 따라서 앞부터 수를 읽으면서 가장 큰 수를 찾아서 답을 만드는 방식으로 진행해야한다. #include #include #include #include #include #include #include using namespace std; string solution(string number, int k) { string answer=""; int remaind..

Algorithm 2021.07.27