C++105 [C++] 백준 2630번 : 색종이 만들기 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 문제 풀이 분할 정복의 첫 문제이다. 함수 div_conq에 x와 y의 좌표를 넣어서 내부에 파란색이 하나라도 칠해져 있다면 4등분으로 나눈다. 함수에서 따지는 cnt의 개수가 0이라면 지금 확인하는 영역이 파란색으로 칠한 것이 하나도 없는 경우이다. 반대로 cnt의 개수가 변의 길이의 제곱과 같다면 확인하는 영역이 모두 파란색이라는 것이다. 그 외에 개수가 애매하다면 .. 2021. 7. 27. [C++] 백준 5430번 : AC https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제 풀이 이 문제에서 포인트는 세 가지로 나누어 볼 수 있다. 1. string을 입력받아서 덱에 저장 2. 에러가 발생하는 조건 3. 시간제한이 단 1초 입력받은 숫자들은 string이므로 stoi 함수를 사용해서 int로 변환해주어야 한다. 주의할 점은 단순히 isdigit으로 숫자인지 아닌지 분류한다면 두 자리 이상의 수를 제대로 덱으로 가져올 수 없다. 따라서 콤마( , )와 닫는 괄호 ( ] )가 등장한다면 int로 변환해서 덱에 push 해.. 2021. 7. 26. [C++] 백준 1021번 : 회전하는 큐 https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 문제 풀이 문제에서 3가지 연산이 주어진다. 1번 연산은 첫 번째 원소를 뽑는 연산, 2번 연산은 왼쪽으로 회전, 3번 연산은 오른쪽으로 회전이다. 문제의 포인트는 어느 방향으로 회전할지 정하는 것이다. 타깃이 되는 값의 인덱스를 저장해 begin으로부터의 거리(left)와 end로부터의 거리(right)를 비교한다. 타깃 값을 저장하는 큐가 빌 때까지 연산을 반복한다! left > right.. 2021. 7. 25. [C++] 백준 10866번 : 덱 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 풀이 덱의 기본 구현을 묻는 문제였다! 느낀 점 이번 기회에 덱을 공부할 수 있었다. 조만간 STL 컨테이너인 스택과 큐, 덱에 대해서 한번 정리글을 올려야겠다. 코드 #include #include #include using namespace std; int n, tmp; string command; deque dq; int main() { ios_base::sync_wit.. 2021. 7. 24. [C++] 백준 1966번 : 프린터 큐 https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 문제 풀이 이번 문제는 idx와 중요도를 pair로 만들어서 큐에 저장하고, 중요도를 순서대로 정렬한 다른 컨테이너를 만들어서 비교하는게 중요하다. 중요도를 비교해서 맞으면 출력회수(cnt)를 늘리고 만약 m과 idx가 같다면 출력회수를 출력하고 종료한다. 느낀 점 문제를 해결하고 보니 많은 분들이 우선순위 큐를 이용하셨고 나보다 코드가 더 깔끔했다. 하지만 나는 우선순위 큐에 대해서 몰랐기 때문에 .. 2021. 7. 24. [C++] 백준 11866번 : 요세푸스 문제 0 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 문제 풀이 요세푸스 문제에서는 k번째에 사람을 제거한다. 구현한 큐에서 k-1번 동안 front를 맨 뒤로 옮기고, k번째에 front 값을 출력한다. 큐가 비어있지 않다면 ', '를 출력해서 요구하는 출력 형식에 맞춘다! 느낀 점 그렇게 어려운 문제는 아니었지만 코드를 깔끔하게 구현하기 힘들었다. 깔끔하게 구현하기 위해서 시간을 조금 소모한 것 같다. 코드 #include #include using namespace std; int n, k; queue q; void func(i.. 2021. 7. 24. 이전 1 ··· 6 7 8 9 10 11 12 ··· 18 다음