일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 다이나믹 프로그래밍
- Team Fortress 2
- BFS
- 백준
- c++
- 알고리즘
- 트리
- XR Interaction Toolkit
- ue5
- 백트래킹
- 다익스트라
- 정렬
- 그래프
- 투 포인터
- 수학
- 문자열
- 브루트포스
- 유니온 파인드
- 누적 합
- 스택
- 구현
- VR
- 유니티
- 그리디 알고리즘
- DFS
- Unreal Engine 5
- 재귀
- 시뮬레이션
- 우선순위 큐
- 자료구조
- Today
- Total
목록두 포인터 (5)
1일1알

배열을 정렬하고 탐색하면서 배열의 원소 + 4 보다 작거나 같은 원소의 개수를 찾으면서 문제를 해결하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; vector v(n); for (int i = 0; i > v[i]; } sort(v.begin(), ..

두 길을 비교하면서 작은 쪽을 한칸씩 전진시키면서 합을 누적시키고 두 길의 값이 같은 곳에 도달하면 누적된 합 중 큰 값을 최종 합에 추가시키는 방식으로 문제를 해결하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); while (true) { int l1, l2; cin >> l1; if (l1 == 0) bre..

포인터 두개 (start, end)를 이용해서 탐색을 하는데, start 인덱스의 원소가 짝수일 때만 검사하고, 홀수가 k+1 들어가있는 가장 작은 수열을 찾는다. ex) 수열 S가 1, 2, 3, 4, 5, 6, 7, 8, 9 이고 K가 2라면 처음 찾는 수열은 2, 3, 4, 5, 6, 7 일 것이다. 이 수열에서 짝수로만 이루어져있는 수열은 2, 4, 6 이고 길이는 end - start - (cnt - 1)로 구할 수 있다. cnt는 찾은 홀수의 개수이고 1을 cnt에서 빼주는 이유는 홀수를 k개가 아닌 k+1개를 찾았기 때문에 더 찾은 1개를 cnt에서 빼주는 것이다. 그리고 찾은 수열을 일단 유지하면서 start를 이동시키고 start 인덱스의 원소가 홀수면 cnt를 줄여준다. 두번째 경우는 ..

입력받은 문자열이 팰린드롬 이면 0, 문자 하나를 제거해서 팰린드롬이면 1, 둘 다 아니면 2를 출력하는 문제이다. while문에서 문자열의 시작과 끝을 거리를 좁혀가면서 비교하면서 시작 지점이 끝 지점보다 커졌을 때까지 계속 같으면 팰린드롬이고, 만약 다르다면 시작 지점만 하나 늘리거나 끝 지점만 하나 줄여서 다시 비교를 한다. 여기서 하나 이상이 팰린드롬이라면 유사 팰린드롬이고, 둘 다 팰린드롬이 아니라면 그냥 일반 문자열이다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long lon..

연속으로 k개의 초밥을 먹고 쿠폰에 쓰여있는 초밥까지 먹었을 때 최대 몇 가지의 초밥을 먹을 수 있는지를 구하는 문제이다. 우선 마지막 초밥에서 처음 초밥으로 이어지기 때문에 초밥의 정보를 저장하는 배열에 처음부터 k-1개만큼 더한 배열을 만들었다 예제의 입력을 예로 들면 7 9 7 30 2 7 9 25 의 배열에 k-1 즉 3개를 처음부터 더한 배열 7 9 7 30 2 7 9 25 7 9 7 을 만들었다. 이렇게 하면 마지막 원소 25부터 4개를 먹었을 때 25 7 9 7로, 마지막에서 처음으로 돌아가는 것과 같다. 그리고 unordered_map을 로 만들고 k개만큼을 슬라이딩 윈도우 방식으로 탐색하면서 새로운 초밥이 들어오면 초밥을 추가하고, 원래 있던 초밥이 또 들어오면 해당 초밥의 개수를 증가시..