본문 바로가기
728x90

C++16

3. 배열 - 인덱싱 테이블 이용하여 시간복잡도 줄이기 문제 주어진 길이 N의 int배열 arr에서 합이 100인 서로 다른 위치의 두 원소가 존재하면 1을, 존재하지 않으면 0을 반환하는 함수 func2(int arr[], int N)을 작성하라. arr의 각 수는 0 이상 100 이하이고 N은 1000 이하이다. func2({1,52,48}, 3)=1, func2({50,42},2} = 0, func2({4,13,63,87},4) =1 풀이 배열의 인덱스별로 값들을 카운트하여 시간복잡도를 줄일 수 있음. O(N^2) -> O(N) 합이 100인 수가 있는지 찾는 문제 - 100칸의 배열을 만들고, 주어진 값들을 100에서 뺀 후, 해당 인덱스에 카운트, 만약 값이 1일 경우면 프로그램 종료됨. - 이중 반복을 사용해서 모든 원소값들을 더해서 100이 되는.. 2023. 7. 13.
c++ STL <vector> 정리 vector container 란? 자동으로 메모리가 할당되는 배열, 인덱스 접근하여 값 변경 가능 함수로 보낼시에는 참조자를 사용해야 주소를 보내, 원본 변경 가능. 또한, 시간 복잡도도 O(N) -> O(1)로 줄어듬. template를 사용하기 때문에 데이터 타입은 마음대로 넣을 수 있음. vector.push_back(값) : 값을 벡터 맨 마지막에 추가함. (append) vector.pop_back() : 맨 마지막 원소를 제거함. // 여러가지 자료형 선언 가능. 고정된 공간의 할당이 필요 없음. vector v1; vector v2; vector v3; vector v4; // string 예시, 문자열이 벡터 공간 하나의 인덱스에 들어감. python 리스트 같음. 굳. v3.push_b.. 2023. 7. 13.
[c++] 2. 기초 코드 작성 요령 2 문제 풀이 └ A+B (1000) └ 세수정렬 (2752) └ 윤년 (2753) └ 주사위 세 개 (2480) └ 윷놀이 (2490) └ 홀수 (2576) └ 대푯값2 (2587) └ 일곱 난쟁이 (2309) └ 숫자 (10093) └ 핸드폰 요금 (1267) └ 카드 역배치 (10804) └ 최댓값 (2562) Git-Hub 코드 https://github.com/intlabSeJun/c-plus-coding-test/tree/master/2.%20%EA%B8%B0%EC%B4%88%20%EC%BD%94%EB%93%9C%20%EC%9E%91%EC%84%B1%20%EC%9A%94%EB%A0%B9%20ll 알게 된 것 1. STL(Standard Template Library)에 대해서 알게됨 vector는.. 2023. 7. 13.
[c++] 1. 코드 작성 요령 1 - 문제 3 문제 3 * N이 제곱수이면 1을 반환하고 제곱수가 아니면 0을 반환하는 함수 func3(int N)을 작성하라. * N은 10억 이하의 자연수이다. * * 출력 예시 * func3(9) = 1, * func3(693953651) = 0, * func3(756580036) = 1 풀이 제곱수인지 판단하는 문제이므로, 제곱근의 존재 유무를 파악한다. 1. math.h의 sqrt() 함수 이용 2. sqrt()함수를 직접 구현 - 바빌로니아 법 알고리즘(https://s-realstory.tistory.com/17) └ 임의의 수의 제곱근에 빠르게 수렴하는 수열을 만들어 근사값을 구하는 방법. └ 수학적으로 이차방정식의 근을 근사하는 것과 같다고 함. where, x_n = 추정된 근사값, a = 제곱근을 .. 2023. 7. 12.
728x90