전체76 [백준] 5525번 IOIOI - C++ IOIOIP(N) : P(1) = "IOI", P(2) = "IOIOI", P(3) = "IOIOIOI",... 일 때 주어진 문자열 S에 P(N)이 몇 군데 포함되어 있는지 출력하는 문제입니다.입력첫째 줄에 N, 둘째 줄에 S의 길이 M, 셋째 줄에 S가 주어진다.출력S에 P(N)이 몇 군데 포함되어 있는지 출력한다. (P(N) 끼리 겹칠 수 있음)알고리즘// KMP 알고리즘을 응용했다.while(i=0;i코드#include #include using namespace std;int main() { int n, m, cnt = 0; string s; cin >> n >> m >> s; int cmp_len = 1 + 2 * n; bool prev_cmp = false; for (int i = 0; i .. 2024. 10. 21. [코테] 해시 해시해시 함수해시함수는 특정한 Key를 입력받으면 적절한 해시값(Index)을 반환하는 함수이다. 해시 함수를 이용하면 인덱스에 키 정보를 저장할 수 있다. 키를 입력받으면 해시 함수를 적용하여 인덱스를 바로 구하고 인덱스로 접근하면 O(1) 시간에 값을 얻을 수 있다.해시함수는 KEY의 개수가 n개 라면 해시값은 0 ~ n-1 사이 값을 내야한다. 이때 KEY값에 따라 동일한 해시값이 나올 수 도있는데 이것을 해시충돌이라고 한다. 이러한 해시충돌이 적을수록 좋은 해시함수라고 할 수 있다.해시 함수 - 나눗셈 법h(x) = x mod k (x는 키, k는 소수)k로 나눈 나머지는 무조건 0 ~ k - 1이기 때문에 해시 함수라고 할 수 있다. (k가 클수록 충돌이 적음)해시 함수 - 곱셈 법h(x) = .. 2024. 10. 19. [코테] 스택, 큐 스택스택이란?LIFO 구조 (Last In First Out), 혹은 FILO 구조라고 할 수도 있음스택 문제의 단서가장 최근에 들어온 원소를 알 수 있다.가장 최근에 들어온 원소 순으로 나온다.스택의 ADTpush() 스택의 맨 위에 원소를 추가한다.pop()스택의 맨 위 원소를 제거한다.top()스택의 맨 위 원소를 반환한다.empty()스택이 비어있으면 참을 반환한다.size()스택의 크기를 반환한다.스택의 사용예시함수 호출 관리페이지 탐색괄호 짝 맞추기DFS백 트래킹큐큐란?FIFO 구조 (First In First Out), 혹은 LILO 구조라고 할 수도 있음큐 문제의 단서들어온 순서대로 나갈 때 사용한다.큐의 ADTpush() 큐의 맨 뒤에 원소를 추가한다.pop()큐의 맨 앞 원소를 제거한다.. 2024. 10. 12. [백준] 30804번 과일 탕후루 - C++ 과일 탕후루 길이가 N인 막대에 N개의 과일을 순서대로 꽂은 탕후루가 있을 때 과일이 2종류만 남을 때까지 맨 앞 또는 맨뒤에서 제거하여 만들 수 있는 탕후루 길이의 최댓값을 구하는 문제입니다.알고리즘// 과일을 최대 두종류만 기억한다.// 새로운 과일이 들어오면 기존 과일꼬치의 길이를 계산하고 가장 앞쪽의 과일뭉치를 제거한다.// 입력이 끝날때 까지 반복한다.int fruit1, start1, end1, fruit2, start2, end2;while(//과일 순서를 입력받는 동안){ if(과일1 또는 과일2가 입력되었을 때) end1 또는 end2의 값을 현재 좌표로 수정 else // 새로운 과일이 들어왔을 때 // 지금까지의 과일 길이를 계산 //.. 2024. 10. 8. [C++] 입력 버퍼가 비어있는지 확인하고 문자가 남아 있다면 제거하는 방법 코딩을 하다 보면 사용자로부터 입력을 받을 때 입력 버퍼에 문자가 남아있어서 입력이 무시되거나 코드가 원하는 흐름대로 흘러가지 않는 경우가 있습니다. 입력 버퍼에 문자가 남아있다고 확신한다면 다음과 같은 방법을 사용할 수 있습니다.cin.ignore(numeric_limits::max(), '\n'); 이 방법은 개행문자가 나올 때까지 버퍼에 있는 입력을 무시하지만 버퍼가 이미 비어있었다면 사용자로부터 받아야 할 입력을 무시해 버리게 됩니다. 그래서 다음과 같이 버퍼에 문자가 남아있는 수만큼 무시하는 방법이 있습니다.cin.ignore(cin.rdbuf()->in_avail()); in_avail()은 버퍼에 남아있는 문자의 수를 반환하는데 문자가 남아있지 않다면 0개의 문자를 무시하므로 이어지는 입력.. 2024. 9. 23. [Python] open 메서드 오류 파일을 못 찾을 때 학교 과제하는데 open 메서드 여는데 계속 오류가 나서 이것저것 찾아보다가 겨우 알았습니다. 저는 VisualStudio2022를 사용하는데. vs파일의 위치 때문에 오류가 발생했습니다. 저의 파일구조는 다음과 같습니다.OSS.vshomework...homework.pydata...score.csv .vs 파일이 OSS 폴더에 있기 때문에 작업 디렉터리가 OSS로 설정되어 있었습니다. 파일위치 앞에 "homework/"를 추가하여 해결하였습니다. 2024. 9. 19. 이전 1 2 3 4 5 6 ··· 13 다음