전체 글 167

알고리즘스터디 1주차 - dynamic programming

다이나믹 프로그램은 이전에 스터디할 때 한 번 다뤘던 소재에다가 점.화.식만 잘 쓰면 된다는 스터디장님의 말이 있었지만 사실 기억이 가물가물하므로 동빈나 유튜브 보고 공부했습니당. 재미써여 근데 선생님,,,, 피보나치랑 이후 문제들이랑 넘 차이가 나지 않나요,,,,? 휴ㅠ 개미전사 문제는 이전 스터디 때 한 번 풀었어서 스윽 보고 지나갔다 . 1로 만들기 문제는 감을 못잡다가 설명을 조금 듣고 문제를 풀었을 때 2의 배수o/x , 3의 배수 o/x , 5의 배수 o,x 이렇게 총 8가지의 경우에 대해서 조건문을 달았는데 나동빈 선생님 설명듣고 이해해버림 ㅠㅠ 개쩔어 뭘 하든 1을 뺀 것보다는 빠르게 감소할거다. 그래서 -1한 값을 default 값으로 설정해준다. 만약 2,3,5 중 하나라도 배수관계가 ..

알고리즘 스터디 1주차 그리디 알고리즘

오호라 greedy algorithm도 대충 스터디장님이 거스름돈 문제를 예시로 설명해주셨지만, 나동빈님의 유튜브 영상을 보고 추가 공부를 했다. 거스름돈 문제보고 완전 쉽네 이러고 회의배정 문제 풀었다가 2시간 고민하고 엉엉 울면서 다시 나동빈님 유튜브로 돌아옴,,,, 눈물 닦으면서 문제 같이 풀어보는 중,,, # 1이 될 때까지 거의 밥솥대가리를 부여잡고 엥 result 뭐야 이러고 있었는데 이해하고 감탄함 진짜 천재같아요 나동빈님 #include using namespace std; int main() { int n, k; // 25 , 3 cin >> n >> k; int count = 0; while (1) { if (n < k) break; int target = (n / k) * k; // ..

알고리즘 스터디 1주차 - 세그먼트 트리 (Segment tree)

1주차 주제는 segment tree / gridy / dynamic Algorithm A - 구간 합 구하기 4 B - 구간 합 구하기 C - 회의실배정 D - 1로 만들기 E - 계단 오르기 F - 수들의 합 2 G - Byte Coin H - 행렬 곱셈 순서 이렇게 8개가 숙제다 다들 코테 준비하던 분들이라서 왕창 잘해서 모든 알고리즘을 설명해주시진 않는다. segment tree 만 설명해주시고, 나머지는 알아서 공부해야되는데 알고리즘 입문 단계인 나에게 좀 버겁다. 하지만 스터디장님이 설명을 끝장나게 잘해주심 외쳐 갓상규~!~!~!~!✨👍🎉 11/14(금) segment tree 설명을 들을 땐 다 이해가 되고 모든 문제를 다 풀 수 있을 거 같은 기분이지만, 막상 문제는 안풀린다. 심지어 한 ..

c++ 3일차

8단계 수학1. 수학문제를 풀면서 사고력을 길러보자,,,, 이런 뜻인줄 몰랐죠,,,, 최대한 수학을 이용해서 빠르고 효율적으로 풀어야만 한다. ಥ_ಥ 백준1712번 (www.acmicpc.net/problem/1712) #include using namespace std; int main() { long a, b, c; cin >> a >> b >> c; if (b >= c) cout > weight; //5x+3y = weight if (weight % 5 == 0) cout = 0; i--) { if ((weight - 5 * i) % 3 == 0) { x = i; y = (weight - 5 * x) / 3; res = x + y; cout

C++ string 사용법

jhnyang.tistory.com/115?category=850633 1,2탄과 blockdmask.tistory.com/338 , en.cppreference.com/w/cpp/string/basic_string 를 참고했습니다. C언어에서는 문자열을 입력받을 때, 문자열의 크기를 모르는 경우가 많았다. (내가 바보여서 그럴 수도 있음 ㅎㅎ ) 그래서 보통 char sentence[100] 이런 식으로 두고 풀었었는데 c++에서는 string이라는 class를 사용하면 편리하게 문자열을 다룰 수 있다. 0. 기본 input ) #include #include //string이라는 헤더파일을 불러온다. using namespace std; int main() { string sentence; // 1 ..

C++ - 2일차 백준 단계별로 풀기 5~7단계

2일차라고 써놓고 한 3일 푼 듯 ^^ㅑㅇ 5단계 배열 c언어를 좀 되새겨보면 배열의 크기를 입력받으려면 미리 배열을 a[1000]으로 설정해놔야한다. 그럼 내가 입력을 5개만 받아도 995개의 기억장소의 낭비가 생긴다. 이를 해결하는 것이 동적할당! 동적할당을 사용하면 배열의 크기를 프로그램 실행시 정해줄 수 있다. calloc보다는 malloc이 손에 익어서 malloc만 쓸 거다. #include // 동적할당을 사용하기 위해 stdlib.h라는 헤더파일이 필요하다. int *a ; // 동적할당의 경우 일차원 배열의 이름 a 는 포인터변수이다. a = malloc(n*sizeof(int)); //int형 n개의 기억장소를 할당 free(a) //메모리 해제 이렇게 네 가지 정도가 바뀌는 듯 하다...