[이코테/투포인터/C++] 투포인터 설명, 구간 합 * 특정한 합을 가지는 부분 연속 수열 찾기 #include using namespace std; int n = 5; // 데이터의 개수 n int m = 5; // 찾고자 하는 부분합 int arr[] = {1, 2, 3, 2, 5}; // 전체 수열 int main(){ int cnt = 0, intervalSum = 0, end = 0; for(int start = 0; start 알고리즘/투포인터 2023.01.15
[이코테/소수/C++] 소수, 약수, 에라토스테네스의 체 * #include using namespace std; // 소수 판별 함수(2이상의 자연수에 대하여) bool isPrimeNumber(int x){ // 2부터 x의 제곱근까지의 모든 수를 확인하며 for(int i=2; i 알고리즘 2023.01.15
[이코테/그리디/C++] 모험가 길드 * #include #include using namespace std; int n; vector arr; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cin >> n; for(int i=0; i> x; arr.push_back(x); } sort(arr.begin(), arr.end()); int result = 0; // 총 그룹의 수 int cnt = 0; // 현재 그룹에 포함된 모험가의 수 for(int i=0; i= arr[i]){ result += 1; cnt = 0; } } cout 알고리즘 2023.01.11
[이코테/그리디/C++] 곱하기 혹은 더하기 #include #include using namespace std; string str; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cin >> str; // 첫 번째 문자를 숫자로 변경한 값을 대입 long long result = str[0] - '0'; for(int i=1; i 알고리즘 2023.01.11
[이코테/그리디/C++] 1이 될 때까지 #include #include using namespace std; int n, k; int result; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> k; while(1){ // n이 k로 나누어 떨어지는 수가 될 때까지 빼기 int target = (n/k)*k; result += (n - target); n = target; // n이 k보다 작을 때 (더이상 나눌 수 없을 때) 반복문 탈출 if(n 알고리즘 2023.01.11
[이코테/그리디/C++] 거스름 돈 #include #include using namespace std; int n = 1260; int cnt; int coinTypes[4] = {500, 100, 50, 10}; int main(void) { ios::sync_with_stdio(0); cin.tie(0); for(int i=0; i 알고리즘 2023.01.11
[이코테/구현/C++] 문자열 재정렬 내장함수 isalpha 사용 isalpha 직접 구현 #include using namespace std; vector v; bool isalpha(char c){ if(c >= 'A' && c ='a' && c> str; int number = 0; for(char c : str){ if(isalpha(c)) v.push_back(c); else{ number += c - '0'; } } sort(v.begin(), v.end()); string result; for(int i=0; i 알고리즘 2023.01.06
[이코테/구현/C++] 왕실의 나이트 #include using namespace std; char col[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}; int dx[] = {2, 2, -2, -2, 1, 1, -1, -1}; int dy[] = {1, -1, 1, -1, 2, -2, 2, -2}; bool check(int x, int y) { if (x >= 1 && x = 1 && y > str; int x; int y = str[1] - '0'; for (int i = 0; i < 8; i++) { if (str[0] == col[i]) { x = i + 1; break; } } int result = 0; for (int i = 0; i < 8; i++) { if (check(x + dx[i], .. 알고리즘 2023.01.06
[이코테/완전탐색/C++] 시각 #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; int result = 0; for(int h=1; h 알고리즘 2023.01.06
[이코테/구현/C++] 상하좌우 주의사항 몇번 이동하는지 정해지지 않았기 때문에 string으로 받는다 n을 입력받고string을 이어서 받기 전에 버퍼를 비워준다 L, R, U, D를 미리 정해두고 그 인덱스에 맞춰 여행가A를 옮긴다 #include using namespace std; int n; string plans; int dx[] = {-1, 1, 0, 0}; //L, R, U, D int dy[] = {0, 0, 1, -1}; char moveTypes[4] = {'L', 'R', 'U', 'D'}; int main() { ios::sync_with_stdio(0); cin.tie(0); //속도 가속화 cin >> n; cin.ignore(); // 버퍼 비우기 getline(cin, plans); int x = 1, y.. 알고리즘 2023.01.05