알고리즘/풀이 51

4179번 불! - C++

✅️[문제] https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net ✅️[풀이] 불과 지훈이의 좌표를 따로 큐에 넣어 각각 BFS를 돌리면 된다! ❗️주의할점은 지훈이의 좌표보다 불의 좌표를 큐에 먼저 넣어야 되는 점이다. 왜냐하면, 지훈이의 맨 처음 좌표가 가장자리에 있는 경우라면 지훈이의 탈출 최소 경로가 잘못되어 계산할 수 있기 때문이다. ❗️지훈이와 불의 방문 여부를 체크하지 않으면 시간초과가 날 수 있으므로 주의하자! ✔️ 지훈..

알고리즘/풀이 2022.07.29

2504번 괄호의 값 - C++

[문제] https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net [풀이] 스택의 괄호 활용 문제이다. 구현이 까다로운 문제이자 생각이 상당히 힘들었다. 총합인 sum과 누적 값인 num을 선언한다. ( [ 기호가 들어오면 각각 num에 2와 3을 곱해주고, 닫는 괄호인 ) ]이 들어오면, 배열의 이전 idx값이 ([ 이라면 num에 sum을 더해주고, idx값이 ([이 아니라면 단순히 pop() 연산과 나누기 연산을 해주면 된다. [코드] #incl..

알고리즘/풀이 2022.07.27

1926번 그림 - C++

[문제] https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net [풀이] DFS 기본 문제 큐에 원소를 처음 넣을때마다 도형 개수를 1 증가 시키고, DFS 탐색하여 원소의 넓이를 구하면 되는 문제이다. [코드] #include using namespace std; #define X first #define Y second int board[501][501]; bool vis[501][501]; int dx[4] = {1,0,-1,0}; int dy[4] ..

알고리즘/풀이 2022.07.27

5430번 AC - C++

[문제] https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net [풀이] 덱 활용 문제이다. 제한 시간이 1초인 것을 유의하자. 처음 시도때는, 덱을 두개 생성하여 R을 입력할때마다 뒤집은 덱을 또 다른 덱에 넣는 방식으로 구현하였는데, 시간 초과가 났다. R이 짝수번 나온경우 D를 할시 맨 앞의 원소를 삭제하면 되고, R이 홀수번 나온 경우 D를 할시 맨 뒤의 원소를 삭제하면 된다. 출력시에는 R이 짝수일때 그대로 출력, 홀수 일때는 뒤에서 부터 출력한다. [코드] #include using namespa..

알고리즘/풀이 2022.07.26

1021번 회전하는 큐 - C++

[문제] https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net [풀이] 큐 활용 문제 [코드] #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int N, M; cin >> N >> M; deque Q; deque Q2; deque Q3; int ans = 0; for(int i=1; i> t; while( Q.front() != t) { Q.push_..

알고리즘/풀이 2022.07.26

2164번 카드2 - C++

[문제] https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net [풀이] 큐 활용 문제 단순히 q.size()가 1이 될때까지 while 문을 돌리고, q.pop()을 하고, q.push()를 활용하면 된다. [코드] #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); queue q; int n; cin >> n; for(int i=1; i 1) { q.pop(..

알고리즘/풀이 2022.07.25