728x90 C++/라이브러리 (STL etc)15 c++ 순열(next_permutation) 사용법 및 응용 n 입력 받아서 1~N까지의 순열 저장 및 출력 (순서o, 중복x)(단, 기존 배열이 오름차순이어야 함) n 입력 받아서 단위행렬 표현(next_permutation 은 0 이하 값으로 순열 만들 수 없음, 따라서 임의의 값 넣고 바꿔서 저장해야 함) 2025. 4. 5. [STL] 순열과 조합, next_permutation #include // next_permutation 기본 형식 int a[3] = {1,2,3} do{ for(int i=0; i 2023. 10. 8. [c++] Tuple 사용법 여러 자료형을 묶어서 사용할 수 있음. #include tuple t(1, 'a', "abcd"); pair는 2쌍까지만 가능하지만, tuple은 여러 쌍 가능. 그렇지만, 같은 자료형을 사용하는 것을 추천. 3쌍 이상 묶어야 할 때 사용. 예를 들어, 큐에 3차원 좌표를 쌓을 때. 1. Tuple 선언 및 초기화 2. Tuple 원소 접근 3. Tuple 원소분해 4. 두 개의 튜플 연결 5. Tuple swap 2023. 7. 28. [c++] 3차원 배열(백터) 선언 및 초기화 3차원 배열을 선언하는 2가지 방법에 대해서 소개합니다. 1. 기본 배열로 선언 및 초기화 2. vector를 이용한 선언 및 초기화 1. 기본 배열로 선언 및 초기화 fill(arr[i], arr[i] + column, value) : i번째 행마다 column까지의 원소에 value를 할당함 2. vector를 이용한 선언 및 초기화 (M,N,H) 형태의 3차원 벡터 생성함. vector안에 또 다른 벡터를 선언하고 이를 높이(H)만큼 선언 초기값은 0으로 할당되며, 원할시 값을 할당할 수 있음. fill()을 사용해서도 초기화가 가능하다. 함수로 넘길시 vector를 복사할 것인지, 주소만 넘길 것인지 생각해야 함. 벡터의 가장 큰 장점은 공간을 미리 할당하지 않아도 됨. 입력받은 공간 크기만큼 할.. 2023. 7. 27. [c++] 반복문 iterator처럼 사용하기. 2023. 7. 26. [c++] vector 입력 1. vector 초기화 안했을 시 push_back()으로 입력해야 함. v[i]처럼 인덱스로 입력 안됨. 2. vector 초기화 시 v[i] 처럼 인덱스로 접근하여 입력 가능 2023. 7. 25. [c++] 2차원 배열(벡터) 선언 및 초기화 2차원 배열을 선언하는 2가지 방법에 대해서 소개합니다. 1. 기본 배열로 선언 및 초기화 2. vector를 이용한 선언 및 초기화 1. 기본 배열로 선언 및 초기화 행과 열의 사이즈를 전역 상수 const로 할당 change_arr()함수 인자로 넘겨줄 시 사용 가능한 foramt을 보여줌 함수 내에서 값 변경시, 원본 값도 변경됨 모든 배열 값들을 특정 값으로 할당하기 위해서는, 1) 이중 반복문 2) fill() 이용 fill(arr[i], arr[i] + column, value) : i번째 행마다 column까지의 원소에 value를 할당함 2. vector를 이용한 선언 및 초기화 vector v(n, vector(m)) : (n,m)형태의 벡터 생성됨 vector안에 또 다른 벡터를 선언하.. 2023. 7. 25. [c++] 1차원 배열(벡터) 선언 및 초기화 방법 1차원 배열을 선언하는 2가지 방법에 대해서 소개합니다. 1. 기본 배열로 선언 및 초기화 2. vector를 이용한 선언 및 초기화 1. 기본 배열로 선언 및 초기화 배열 선언시, const로 미리 지정된 size만큼 선언합니다. 여기서 "size"라는 이름으로는 할당이 안됨. void change_arr_value() 함수에서 배열은 arr[] or *arr2 형태 모두 동일하게 주소를 받아 원본 배열 값에 접근, 값 변경 가능. 배열의 모든 값을 특정 값으로 초기화 하는 방법은 2가지가 있음. 1) 반복문으로 일일이 값 할당 2) fill()을 이용한 할당. (동작은 동일하겠지만 간편히 한 줄로 작성 가능) 2. vector를 이용한 선언 및 초기화 #include를 통해 컨테이너를 불러옴. vec.. 2023. 7. 25. [c++] <STL> pair 사용법 pair는 두 종류의 데이터 타입을 하나로 묶어, 한번에 전달 할 수 있음 서로 연관된 2개의 데이터를 한 쌍으로 묶어서 처리할 때 편리하다. 아래와 같이 여러 데이터 타입을 묶어서 사용할 수 있음, queue 또는 vector 등과 같은 컨테이너와도 유용하게 같이 사용할 수 있음. 2023. 7. 24. [c++] cin.getline() vs getline() 및 cin.ignore() 정리 1. cin.getline(char 배열, 넣을 문자수) 넣을 문자 수만큼만 char 배열에 저장한다. 저장은 각각의 알파벳이 원소 하나하나에 할당됨. 공백도 같이 저장한다. (cin >> 은 공백 전까지 장, cin.getline()은 공백 포함 개행문자 전까지 저장) # 넣을 문자 만큼 받는다. 2. getline(cin, string) from #include getline()은 string에 정의되어 있으며, string 형의 문자열 저장. # getline(cin, string, ‘특정문자’) : 특정문자 전까지의 문자열을 받는다. ※ 주의사항, cin.ignore() 일반적인 cin >> a;와 같이 입력 받고, getline() 혹은 cin.getline()을 사용할 시에는 재대로 동작하지 .. 2023. 7. 14. [c++] 큐, STL<queue> First in First out 맨 먼저 입력 받은 값을 내보내게 됨. head는 배열의 첫번째를 가르키고, tail은 배열의 마지막 +1을 가르킴(입력을 받을 곳) push : 배열의 tail에 입력, tail++ pop : 배열의 head를 출력, head++ pop을 한다고 해서 공간이 없어지는게 아닌 그대로 남아 있는 형태이기 때문에, 고정된 배열의 공간에서 pop을 수행한 메모리는 사용하지 못하게 된다. 이를 보완하기 위해 원형 queue 등이 있음. 2023. 7. 13. [c++] 스택 - 일반구현 vs STL<stack> First in Last out 구조. Last out 원소를 가르키는 pos 필요, pop시 pos-- 1. 일반구현 2. STL stack https://github.com/intlabSeJun/c-plus-coding-test/tree/master/5.%20%EC%8A%A4%ED%83%9D 2023. 7. 13. 이전 1 2 다음 728x90