본문 바로가기

Algorithm/C++149

[넥토리얼 2기] 코테 4시간 보호되어 있는 글 입니다. 2022. 10. 7.
[백준 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.
[백준 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.
[백준 10814] 나이순 정렬 10814번: 나이순 정렬 (acmicpc.net) 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 배운 것 구조체로도 풀 수 있고 stable sort로도 풀 수 있고 stable_sort 원래의 순서를 손상시키지 않으면서 정렬하는것 tuple 원소값 하나씩 가져오기 내코드 - stable sort 버전 #include using namespace std; bool cmp(pair a, pair b) { return a.first> N; vector v; for(int i=0;i>age>>name; v.push_b.. 2022. 10. 4.