queue
-
2667.단지번호붙이기알고리즘/백준 BAEK JOON 2020. 5. 21. 23:40
이번에 풀어볼 문제는 단지번호붙이기이다. 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. � www.acmicpc.net 생각보다 이상한곳에 막혀서 시간낭비를 했다. 시간은 1시간 30분정도 걸렸고 목표한 시간보다 30분이나 초과되었다. 사실 30분컷 낼 수 있었는데 이걸 코드하나를 잘못집어넣어서 하루종일 걸렸다.. 후... DFS를 이용해서 풀었고 이 문제의 포인트는 Stack를 이용하되 Stack에 자신이 이동한 부분의 좌표를 넣어주는 것이다. 그래야지 DFS로 쭈욱 탐색하다가 막혔을 때 다시 돌아가서 탐색하지 않은 방향으로 탐색을 진행..
-
5430.AC알고리즘/백준 BAEK JOON 2020. 4. 13. 18:10
이번에 풀어볼 문제는 백준의 5430번 AC이다. 난이도가 많이 어렵기보단 센스가 필요한 거 같다. 문제를 보도록 하자. .....?????? 5430번: AC 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 숫자의 순서를 뒤집는 함수이고, D는 첫 번째 숫자를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. www.acmicpc.net #include #include #incl..
-
1021.회전하는 큐알고리즘/백준 BAEK JOON 2020. 4. 9. 00:41
이번 문제도 조금 당황할 순 있어도 난이도가 그렇게 어렵지 않았다. 문제에서 시키는 대로 차근차근 생각하면 되고 문제를 제대로 읽어야 한다.이번 문제에서는 조건을 대충 읽었다가 내 맘대로 구현을 해버렸다. 문제를 다시 읽고 나서야내 맘대로 문제를 풀었다는 것을 확인했다. ( 문제 대충 읽는 실수 주의! )1021번: 회전하는 큐첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 순서대로 주어진다. 위치는 1보다 크거나 같고, N보다 작거나 같은 자연수이다.www.acmicpc.net #include #include #include using ..
-
1966.프린터 큐알고리즘/백준 BAEK JOON 2020. 4. 7. 20:39
이번 문제는 Queue를 이용한 프린터 큐 문제이다!1966번: 프린터 큐문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를www.acmicpc.net제출하면서 제발 한 번에 좀 맞아라 했는데 (솔직히 속으론 항상 그랬듯 "틀렸습니다"가 나올 줄 알았다..) 너무 기분 좋게 첫 제출로 한 번에 정답을 맞..
-
11866.요세푸스 문제 0알고리즘/백준 BAEK JOON 2020. 4. 6. 23:57
이번 문제는 백준의 11866 요세푸스 문제 0이다.11866번: 요세푸스 문제 0첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)www.acmicpc.net문제를 이해하는 건 금방했는데 원형으로 배열을 만들어야하나 하는 생각을 했고굳이 그럴 필요가 없다고 생각해서 포인터로 예외처리를 하려고 하였으나너무나 비효율적이었고 결국 queue를 사용해서 풀었다. 조금만 쉽게 생각하면 됬는데.. 허허.. #include #include using namespace std; int main() { int n, k; cin >> n >> k; // 길이와 K번째 순서 입력 queueq; // queue for(int i=1; i
-
1874.스택 수열알고리즘/백준 BAEK JOON 2020. 4. 2. 23:59
이 문제는 그렇게 어려운 문제는 아니였지만 굉장히 헷갈리긴 했다. Stack과 Queue문제를 꽤 풀어본 것이 도움이 되었던 것 같다. 스택과 큐에 대한 다른문제들도 풀었지만 난이도가 너무 쉽다고 느껴 굳이 남기지 않았다. 하지만 처음에 문제를 거꾸로 이해해버렸고 반례를 만나서야 잘못 이해했다는 것을 알아챘다. 아직 반례를 생각해 내는 것이 굉장히 서툰 것 같다.. 어쨌든 결과적으로 다 구현하고 나서 시간초과가 났는데 그러한 이유는 아래와 같다. #include #include #include using namespace std; int main() { queueans; // 부호정답이 저장될 queue queue q; // 입력받을 queue stack t; // 수열이 가능한지 ..
-
1226.미로1 & 1227.미로2알고리즘/SW Expert Academy 2020. 3. 26. 00:16
이번문제는 미로1과 미로2이다. 문제는 간단하다. 주어진 출발지에서 주어진 목적지까지 갈 수 있나 없나를 체크하는 알고리즘을 구현하는 것이고 나는 DFS를 이용하기로 했다. 문제는 queue강의에서 출제되었지만 나는 DFS를 Stack을 이용해서 구현해보았다. 앞서 stack과 queue를 나름 많이 다뤄보아서인지 사용이 자연스러워진거같다. 처음 시작할 때는 분명 헷갈렸던 것 같은데.. ㅎㅎ 미로1과 미로2는 MAX를 16이나 100이냐 말고 코드가 달라진게 없어서 한 번에 포스팅했다. #include #include #include using namespace std; #define MAX 16 // 100 int dx[4]={-1,1,0,0}; // X축 이동 int dy[4]=..
-
1225. 암호생성기알고리즘/SW Expert Academy 2020. 3. 24. 22:09
이번 문제는 너무 쉽다.. 그래서 딱히 설명보다는 그냥 코드만 남겨두도록 하겠다.. #include #include using namespace std; int main() { for(int k=1; k> num; for(int i=0; i> a; q.push(a); } int count = 1; while(q.back()>0){ if(count>5) count=1; int b = q.front(); b-=count; q.pop(); q.push(b); count++; } if(q.back()