전체 글(230)
-
24523 - 내 뒤에 나와 다른 수
문제https://www.acmicpc.net/problem/24523느낀점구현 기본 문제, 시간 초과를 해결하는 로직을 생각하는 것이 상당히 까다로웠다.풀이#include #include using namespace std;int main(){ int N; cin >> N; vector arr(N); vector answer(N, -1); for (int i = 0; i > arr[i]; } if (N == 1) { cout = N) { break; } int ref = arr[left]; while (ref == arr[right]) { righ..
2025.02.24 -
1806 - 부분합
문제https://www.acmicpc.net/problem/1806느낀점응용 투포인터 문제, 조건 비교에서 등호를 넣으니 풀렸고 안 넣으니 풀리지 않았는데, 그 엣지케이스를 정확하게 모르겠음.. 어쨌든 등호도 신경 써야할 것이다~~풀이#include #include using namespace std;int main(){ int N, S; cin >> N >> S; vector arr(N); for (int i = 0; i > arr[i]; if (arr[i] == S) { cout = N || right >= N) { break; } if (sum
2025.02.23 -
1253 - 좋다
문제https://www.acmicpc.net/problem/1253느낀점응용 투포인터 문제, 문제의 조건을 잘 생각해서 엣지 케이스를 생각해보자. 그것도 연습이다~~풀이#include #include #include using namespace std;int main(){ int N; cin >> N; if (N arr(N); for (int i = 0; i > arr[i]; } sort(arr.begin(), arr.end()); int good = 0; for (int i = 0; i temp = arr; temp.erase(temp.begin() + i); int start = 0, end = temp.size() - 1; ..
2025.02.22 -
18114 - 블랙 프라이데이
문제https://www.acmicpc.net/problem/18114느낀점응용 투 포인터 문제, 딱 맞는 값을 찾는다는 의미에서 이분탐색으로도 생각 가능!, 정렬해야된다는 것을 빼먹어서 반례 찾는데 어려웠음풀이#include #include #include using namespace std;int main(){ int N, C; cin >> N >> C; vector arr(N); for (int i = 0; i > arr[i]; } sort(arr.begin(), arr.end()); if (N == 1) { if (arr[0] == C) { cout C) { right--; ..
2025.02.19 -
17609 - 회문
문제https://www.acmicpc.net/problem/17609느낀점단순한 투 포인터 문제인 줄 알았는데, 신경 써야할 엣지 케이스가 많았다. 왼쪽 방향이나 오른쪽 방향으로 전진했을 때, 틀린 경우 원래 상태로 되돌아가도록 해야했었다. 그를 위해선 팰린 드롬을 검사하는 로직과 움직이는 로직을 분리했어야했는데, 초반에 그러지 못해 틀렸다. 팰린 드롬을 검사하는 로직과 포인터를 움직이는 로직을 분리하여 문제를 해결하였음풀이#include #include #include #include using namespace std;int isP(string s, int left, int right, int limit){ if (limit > T; for (int i = 0; i 그냥 단순 재귀로 풀..
2025.02.18 -
14921 - 용액 합성하기
문제https://www.acmicpc.net/problem/14921느낀점응용 투 포인터 문제, 결과 값을 어떻게 처리할 지 고민을 좀 했다.풀이#include #include #include using namespace std;#define pii pairint main(){ int N; cin >> N; vector arr(N); for (int i = 0; i > arr[i]; } int left = 0, right = N - 1; vector answerList; while (left
2025.02.18