윈도우 슬라이싱 4

백준 14658번 하늘에서 별똥별이 빗발친다 (C++)

문제 링크 : https://www.acmicpc.net/problem/14658 14658번: 하늘에서 별똥별이 빗발친다 첫째 줄에 네 정수 N, M, L, K가 주어진다. (1 ≤ N, M ≤ 500,000, 1 ≤ L ≤ 100,000, 1 ≤ K ≤ 100) N은 별똥별이 떨어지는 구역의 가로길이, M은 세로길이, L은 트램펄린의 한 변의 길이, K는 별똥별의 수를 www.acmicpc.net 문제 요약 1. n*m의 배열에는 k개의 별똥별이 떨어집니다. (1 l >> k; int y,x,ny,nx,ans=0,cnt=0; vector v(k); for(int i=0; i> x >> y; v[i] = {x,y}; } 2. 별똥별의 갯수만큼 3중 for문을 돌립니다. for(int i=0; i> l ..

백준 1522번 문자열 교환 (C++)

문제 링크 : https://www.acmicpc.net/problem/1522 1522번: 문자열 교환 a와 b로만 이루어진 문자열이 주어질 때, a를 모두 연속으로 만들기 위해서 필요한 교환의 회수를 최소로 하는 프로그램을 작성하시오. 이 문자열은 원형이기 때문에, 처음과 끝은 서로 인접해 www.acmicpc.net 문제 요약 1. 문자열 s는 원형이기 때문에 처음과 끝은 서로 붙어있습니다. 2. 문자열 s에서 a를 모두 연속으로 만들기 위한 문자의 최소 교환 횟수를 출력하세요. 핵심 포인트 1. 문자는 1대1로 교환이 가능합니다. 즉, 'a''b'처럼 각각 1개씩 교환이 가능하며, 교환된 문자는 서로 자리가 바뀌게 됩니다. 2. 문자열의 최대 길이는 1,000입니다. 2중 for문을 돌려도 시간초..

백준 2531번 회전 초밥 (C++)

문제 링크 : https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net 문제 풀이는 다음과 같다. 1. 문제에서 요구하는대로 변수들을 만들고 회전초밥의 값을 저장한다. 이때 회전초밥의 값을 저장할 배열의 사이즈를 2배로 하는 것이 포인트이다. (2배 말고도 n+k까지 세워도 상관은 없다.) 이유는 회전초밥이기 때문에 원형으로 이루어져있으며, 아래 그림과 같이 n번째에서 1번째, 2번째 ... 를 탐색할 필요가 있기..

백준 2096번 내려가기 (C++)

문제 링크 : https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 이 문제는 메모리 제한이 걸려있으므로, 무턱대로 100,000*3의 배열을 만들었다가는 메모리 초과가 나온다. 때문에 배열의 사이즈를 크게 잡지 않고 값을 입력받을 방법이 필요하다. 문제 풀이는 다음과 같다. 1. 필요한 변수들을 설정하고, 첫 번째 줄의 값들을 저장한다. int n,a,b,c,x,y,z,maxi = 0, mini = 900001; cin >> n; cin >> a >> b >> ..