Algorithm(5)
-
백준 10804 [카드 역배치]
https://www.acmicpc.net/problem/10804쉬운 문제지만 제대로 삽질해서 가져왔다. 처음 생각은 구간을 받아서 구간에 해당하는 값들을 새로 배열을 만들어서 저장한뒤원래 배열에 역순으로 순회하며 다시 값을 덮으려 했는데그렇게 하려면 입력받은 구간 사이즈에 맞는 배열을 동적으로 할당해야 한다. 10번이나.일단 해봤지만 아무리 생각해도 이난이도 문제에 그렇게 접근하는 건 아닌 것 같아서 다시 풀었다. #include using namespace std;void Reverse(int arr[], int start, int end) { // 역순으로 만들기 int count = (end - start +1) / 2; //swap 진행 횟수, 홀수의 경우에도 형변환 int tmp = 0; f..
2025.03.14 -
백준 17413 [단어 뒤집기 2]
https://www.acmicpc.net/problem/17413 단어보다 머리가 먼저 뒤집어질 뻔한 문제였다.문자열에 대한 처리고 태그와 공백에 대해서 문자열을 다르게 처리하는 문제였다.학교에서 데이터마이닝, 바이오 컴퓨팅 매주 과제 하던게 떠올랐다.. 힘들었는데 그때 실력이 많이 늘었던 것 같다.https://github.com/plus-ul-tra/Data_Mining GitHub - plus-ul-tra/Data_Mining: Data handling algorithm with pythonData handling algorithm with python. Contribute to plus-ul-tra/Data_Mining development by creating an account on GitH..
2025.03.13 -
백준 11328 [Strfry]
https://www.acmicpc.net/problem/11328 처음에 문제를 제대로 안읽어서 알파벳만 입력받는 걸 못보고, 숫자 포함 모든 문자로 알고 조금 헤맸다.알파벳만 입력받고 문자비교하는 문제는 거의 알파벳 인덱스 배열을 사용하는 것 같다.구조체는 안써도 좋지만 족쇄가 추가되어 구조체를 사용하는 것이 풀이 조건이였다. 문제를 많이 풀어보지 않으면 알파벳 인덱스 배열의 +=1 . -=1을 떠올리기 힘들었다.파이썬을 좀 썼었는데 파이썬은 for문 구성 시 컨테이너에서 구성요소들로 바로꺼내 쓰는게 정말 편했는데오늘 찾아보니 C++도 되더라 (나이스ㅋ) 다 풀고 다른 사람 풀이를 보면 처음보는 문법 사용법들이 많은데잘 익혀두자 입력과 동시에 처리를 해보려고 했는데 (왜 그랬지?) 역시 전체 데이터를..
2025.03.13 -
백준 1475 [방 번호]
https://www.acmicpc.net/problem/1475 어떤 네임드 알고리즘이 있는 문제는 아니지만예외처리에 관한 코드 작성가능 여부에 대해서 묻는 문제라서 가져왔다.어렵게 보이지만 결국 6,9를 제외한 숫자는 세트당 1번만 사용가능 하기 때문에최대 빈도수가 곧 필요한 세트 수 이다.하지만 거기에 더해 6,9에 대해서도 고려를 해줘야 한다.#include using namespace std;int main(){ //6,9를 제외한 가장 많은것 세트 int num = 0; int count[10] = { 0, }; int set = 0; int six_nine_set = 0; cin >> num; while (num != 0) { count[nu..
2025.03.11 -
백준 3273 [두 수의 합]
https://www.acmicpc.net/problem/3273 해당 문제는 특정한 합을 만족하는 순서쌍을 찾는 문제이다.(순서쌍이 아닌 구간 합에 대한 문제는 비슷하지만 다른 방법의 적용이 필요하다.) 딱 봤을때는 2중 for문으로 해결이 가능해 보인다.(실제로 되긴한다)하지만 조건에서 배열의 크기가 최대 1000000까지 이기때문에 이중 for문을 사용하면 시간초과가 발생한다.시간 복잡도가 O(n^2)이기 때문이다.따라서 해당 문제는 투포인터 알고리즘을 사용해서 접근한다.#include #include using namespace std;const int MAX_N = 1000000;int arr[MAX_N] = {};int main() { int n = 0; //배열 원소갯수 int sum = ..
2025.03.11