본문 바로가기

Algorithm197

[백준 11659] 구간 합 구하기 4 11659번: 구간 합 구하기 4 (acmicpc.net) 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 내 풀이 #include using namespace std; int n, m; int a[100004], d[100004]; int main(void){ ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for(int i=1;i>a[i]; d[i]=d[i-1]+a[i]; } int n1,n2; for(int i=0;i>n1>>n2; cout 2022. 10. 5.
[알고리즘 오답노트] 정렬 정렬 유형 * 문자열에 많이 쓰이는 함수 reverse begin과 end를 통해 전체를 바꿔도 되고 dopa.begin(), dopa.begin() + 3 이런식으로 부분만 바꿀 수 있음 substr 시작지점으로부터 몇개의 문자열을 뽑아냄 (시작지점, 몇개) 만약 시작지점만 넣게 되면 마지막까지 문자열을 뽑음 find 어떠한 문자열이 들어있나 찾음 만약 찾지 못한다면 문자열의 끝 위치인 string::npos를 반환 string dopa = "amumu is best"; int main(){ cout 2022. 10. 5.
[알고리즘 오답노트] BFS BFS 유형 뽀개기 * 2차원 배열 입력 * 1. 하나씩 띄어서 입력할 때 cin >> n >> m; for(int i = 0; i > board[i][j]; 2. 붙어서 입력 cin >> n >> m; for(int i = 0; i > board[i]; int a[10][10], n, m; int main(){ cin >> n >> m; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ scanf("%1d", &a[i][j]); } } * reset 할 때 fill 함수 * for(int i = 0; i < n; i++){ fill(board[i], b.. 2022. 10. 5.
[백준 2910] 빈도 정렬 2910번: 빈도 정렬 (acmicpc.net) 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net 배운것 stable sort 사용 + bool check 사용 정답 코드 #include using namespace std; #define X first #define Y second bool cmp(const pair &a, const pair &b) { return a.first>b.first; } int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n, c; cin >> n >> c; vector .. 2022. 10. 4.
[백준 7795] 먹을 것인가 먹힐 것인가 7795번: 먹을 것인가 먹힐 것인가 (acmicpc.net) 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 배운 것 이분탐색 이용 upper_bound 용도 : 찾으려는 key 값을 초과하는 숫자가 배열 몇 번째에서 처음 등장하는지 찾기 위함 ⭐ 사용 조건 : 탐색을 진행할 배열 혹은 벡터는 오름차순 정렬되어 있어야 함 #include #include using namespace std; int main() { vector arr = { 1,2,3,4,5.. 2022. 10. 4.
[백준 11656] 접미사 배열 11656번: 접미사 배열 (acmicpc.net) 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 배운 것 문자열 자르기 연습 substr() 문자열.substr(시작 위치, 길이) 첫 번째 인수에는 시작 위치를, 두 번째 인수에는 취득하고 싶은 문자수를 지정 문자열 시작은 0부터 #include using namespace std; int main() { string str1 = "abcde"; cout 2022. 10. 4.