슬라이딩 윈도우 2

[BOJ] 3078번 좋은 친구 (C++)

문제 (https://www.acmicpc.net/problem/3078) 3078번: 좋은 친구 첫째 줄에 N과 K가 주어진다. (3 ≤ N ≤ 300,000, 1 ≤ K ≤ N) 다음 N개 줄에는 상근이네 반 학생의 이름이 성적순으로 주어진다. 이름은 알파벳 대문자로 이루어져 있고, 2글자 ~ 20글자이다. www.acmicpc.net 슬라이딩 윈도우로 해결한 문제!!! 문제 설명이 엄청 길지만,, 요약하자면 좋은 친구의 정의는 아래와 같고 좋은 친구가 몇 쌍 있는지 출력하면 된다. 좋은친구: 등수의 차이가 K보다 작거나 같으면서 이름의 길이가 같은 친구 pair (등수, 이름의 길이) 형태로 입력을 받았다. i번째(i등) 학생은 크기가 k인 창문 내의 다른 학생들 중, 이름의 길이가 같은 학생과 좋..

ALGORITHM/BOJ 2022.01.19

[BOJ] 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 DP + 슬라이딩 윈도우로 해결한 문제이다. 두 알고리즘 모두 취약해서...ㅎㅎ 다른 코드를 참고하여 풀었다. 크기가 3인 배열들 minArr, maxArr, minTmp, maxTmp을 사용했는데, minTmp, maxTmp는 현재 행 이전까지의 결과를 저장해둔 배열이다. - 첫 번째 행의 값들은 최솟값이자 최댓값이므로 4개의 배열에 모두 삽입해준다. - 첫 번째 행이 아닐 경우에는 minTmp, m..

ALGORITHM/BOJ 2022.01.19