본문 바로가기

전체 글8

[BOJ - 5430] AC(C++) 문제   접근방법  입력 받는 형태가 좀 괘씸하지만 숫자를 추출해야 하므로, substr 함수를 통해 대괄호를 제거x = x.substr(1, x.size() - 2); 다음은 쉼표를 기준으로 숫자를 추출stringstream ss(x);string temp;while (getline(ss, temp, ',')) { if (!temp.empty()) numbers.push_back(stoi(temp));} 이 외에는 bool 자료형 변수를 사용해서 R의 상태를 판별(정방향 or 반대방향)   기존 코드#include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL.. 2025. 2. 10.
[BOJ - 11000] 강의실 배정(C++) 문제   접근 방법수업 시작 시간을 기준으로 정렬 -> 우선순위 큐로 현재 사용 중인 강의실 관리가장 빨리 끝나는 강의실의 종료 시간 -> 새로운 강의의 시작 시간보다 작거나 같은 경우(pop, push를 통해 재사용)   코드#include #include #include #include using namespace std;int N;vector> lesson;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N; lesson.resize(N); for (int i = 0; i > lesson[i].first >> lesson[i].second; sort(lesso.. 2025. 2. 9.
[BOJ - 2343] 기타 레슨(C++) 문제   접근 방법 이진탐색으로 최적의 블루레이값을 탐색, count 변수를 설정해 M과 비교   기존 코드#include #include using namespace std;int N, M;vector v;bool isPossible(int x) { int count = 1, tmp = 0; for (int i: v) { tmp += i; if (tmp > x) { count++; tmp = i; } if (count > M) return false; } return true;}int main() { cin >> N >> M; v.resize(N); int max_length .. 2025. 2. 9.
[BOJ - 11478] 서로 다른 부분 문자열의 개수(C++) 문제   접근 방법모든 부분 문자열을 추출한 후 이를 반복되는지 확인해야 함이 과정은 C++의 set 함수를 사용해서 처리   코드#include #include using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string S; cin >> S; set s; for (int i = 0; i    링크11478번: 서로 다른 부분 문자열의 개수 2025. 2. 8.
[BOJ - 5397] 키로거(C++) 문제  접근 방법'' 를 통해서 이동하며 해당 위치의 값을 지우고 삽입하는 과정을 진행 -> list로 선언iterator을 활용하여 조건문을 통해 판별, 지우는 경우에는 it의 값을 갱신해야 함, it = S.erase(it)이 과정을 거치면 결과적으로 문제 해결 가능.    코드#include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int T; cin >> T; while (T--) { string L; cin >> L; list S; list::iterator it =.. 2025. 2. 8.
[BOJ - 1715] 카드 정렬하기(C++) 문제   접근 방법항상 가장 작은 두 묶음을 선택하는 방법을 사용해야 함 -> 최소 힙으로 접근하기로 결정    기존 코드#include #include using namespace std;int main() { int N; cin >> N; priority_queue, greater> q; for (int i = 0; i > card; q.push(card); } int result = 0; while (q.size() > 1) { int t = q.top(); q.pop(); t += q.top(); q.pop(); result += t; q.push(t); } co.. 2025. 2. 6.