일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- map
- Sort
- 분할정복
- 티스토리챌린지
- 문자열
- 깊이우선탐색
- DP
- 알고리즘
- 배열
- int
- 백준
- BFS
- 최소공배수
- priority_queue
- 유클리드호제법
- vector
- 정렬
- 그래프
- 프로그래머스
- 오블완
- N과M
- C++
- 에라토스테네스의 체
- Set
- 다이나믹프로그래밍
- stoi
- 우선순위큐
- 이분탐색
- DFS
- 백트래킹
- Today
- Total
목록C++ (73)
안녕 세상아,

유클리드 호제법이란? 2개의 자연수의 최대공약수를 구하는 알고리즘이다. 2개의 자연수 a,b에 대해 a를 b로 나눈 나머지를 r이라고 하면 (a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. b를 r로 나눈 나머지 x를 구하고, 다시 r을 x로 나눈 나머지를 구하는 과정을 반복한다. 결국 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다. 예시 1925와 819의 최대공약수 1925%819=287 -> 819%287=245 -> 287%245=42 -> 245%42=35 -> 42%35=7 -> 35%7=0 ====> 7이 최대 공약수! int gcd(int a, int b) { int c; while (b) { c = a % b; a = b; b = c; } retur..
cout.precision(N); 가장 큰 자리수부터 N자리를 출력하겠다는 것이다. #include using namespace std; int main(){ float num= 1.23456; cout.precision(2); cout
문자열 길이는 length 함수로 구한다. 방법: 문자열을 선언한 후 바로 뒤에 .length() 만 쓰면 됨. .size()도 출력되는 값은 같지만, 굳이 따지자면 string의 사이즈를 반환한다. 하지만 둘이 바꿔서 사용해도 크게 문제는 없다. #include #include using namespace std; int main(){ string str="hello"; cout
while(1) 무한루프 무한루프 반복문이다. break 제어가 없으면 계속 반복한다. while (1) 뿐만 아니라 0이 아닌 수가 있으면 다 무한 루프로 계속 반복한다. 예를들어 while(2), while(222), while(-23) 모두 무한루프로 while(1)과 같은 효과를 가진다. 무한루프에서 빠져나오는 방법은 break;를 사용하면 된다. 하지만 while(1)을 사용하는 것은 CPU 사용량을 증가시키기 때문에 되도록이면 사용하지 않는 것이 좋다. while(0) 루프 차단 while(1)과 정확히 반대되는 반복문이다. 아예 루프를 차단해서 루프가 실행되지 않는다.
수학 계산을 하게 될 때 꼭 필요한 함수이다. 이 함수는 헤더에 포함되어있어서 include 해주어야한다. ●double sqrt(double x); - 어느 수의 제곱근을 구할 때 사용. - 리턴형은 double #include #include using namespace std; int main() { int a = 25; int b; b = sqrt(25); cout
동적배열을 알아보기 전에 정적배열에 대해 간단하게 설명을 하면, 정적배열이란? 간단하게 말해 배열의 크기를 미리 설정하는 것이다. 프로그램 실행 시작 시 미리 정해놓은 배열의 크기만큼 기억공간이 할당된다. int array[3]={0,1,2}; //배열 크기 미리 설정 그에 반해 동적배열이란? 배열의 길이를 고정하지 않고 유동적으로 변경할 수 있다. 크기 할당할 때 기억공간이 배정되고, 시작 주소를 기억한다. 이때, 메모리 누수 방지를 위해 기억공간을 해제해야 한다. 메모리를 할당하기 위해 new 연산자를 사용해야한다. new 사용법: 타입* 변수명 = new 타입[크기]; int a; cin>>a; int* array=new int[a]; // 배열 형태 메모리 동적할당 for(int i=0; ..

문자열 입력의 종류는 여러가지가 있다. 우선 가장 많이 사용하는 것은 cin 이다. cin 문자와 문자열 모두 입력 받을 수 있음 하지만 공백과 엔터가 나오면 입력을 종료한 것으로 간주한다. 문장이나 띄어쓰기가 포함된 단어는 출력하지 못한다. #include #include using namespace std; int main(){ int a; string str; cin>>a>>str; cout
배열이란? 똑같은 자료형이 연속적으로 메모리에 할당되는 것이다. Index를 통해 특정한 자료에 접근한다. 예를 들어 학생 30명의 키를 데이터로 저장한다고 생각해보자. int student1 = 156; int student2 = 152; int student3 = 163; ... int student29 = 171; int student30 = 159; 위의 예와 같이 하나하나 입력해야 하는데 시간도 많이 들 것이고 여러가지로 비효율적이다. 배열을 사용하면 다 입력하는 것 보다 더 간단하게 구할 수 있다. c++에서 배열을 선언하는 문법은 다음과 같다. - 자료형 배열명[배열 크기]; 앞에서 예를 든 30명의 키를 저장하는 배열을 선언과 초기화를 하기 위해서는 다음과 같이 하면 된다. in..
https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 유클리드호제법을 사용해서 최대공약수를 구했다. 최소공배수와 최대공배수의 곱은 두 수의 곱과 같기 때문에 최대공약수를 구하면 최소공배수는 간단하게 구할 수 있다. #include #include using namespace std; //두개씩 비교해서 결론 도달 -> 시간초과 안되겠지? //최소공배수는 유클리드호제법 사용? //최대공약수 유클리드호제법 사용 int gcd(int a, int b){ ..
https://www.acmicpc.net/problem/11722 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net 11053번 문제랑 같은 문제라고 생각하면 된다. dp를 이용해서 문제를 해결하였다. #include #include using namespace std; int arr[1001]; int dp[1001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie..