본문 바로가기
728x90

분류 전체보기81

[c++] STL <list> 정리 STL의 list는 양방향 연결리스트 구조이다. #include #include // list로 불러온다. #include using namespace std; // 여러가지 자료형 선언 가능 list L; list L_string; for (int i = 0; i < 10; i++) L.push_back(i); // 값들을 저장하면서 연결해줌. // insert + next 예제 L.insert(next(L.begin(),2), 3); // L.begin에서 2만큼 next한 지점에 3을 insert함. 오른쪽으로 한칸씩 밀려남 // erase + next L.erase(next(L.begin(), 2)); // L.begin의 2만큼 next한 지점의 값을 지운다. 왼쪽으로 한칸씩 밀려남 // siz.. 2023. 7. 13.
[c++] 백준 에디터(1406), 연결리스트 문제 https://www.acmicpc.net/problem/1406 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다. 이 편집기가 지원하는 명령어는 다음과 같다. L : 커서를 왼쪽으로 한 칸 옮김 (커서가 문장의 맨 앞이면 무시됨) D : 커서를 오른쪽으로 한 칸 옮김 (커서가 문장의 맨 뒤이면 .. 2023. 7. 13.
[c++] 백준 숫자의 개수(2577), 배열 문제 https://www.acmicpc.net/problem/2577 세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다. 입력 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. 출력 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 .. 2023. 7. 13.
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.
git branch 2개(main, master) 생성될 시 해결법 원격 저장소(git)에 로컬저장소(내컴퓨터)의 파일을 연동했는데, branch가 2개 생기는 상황 왼쪽과 같이 분명히 master에 push 했는데, 이미 default가 main이 생기는 상황이 있음. 원인은 원격저장소(git)에서 처음에 repository를 생성시 Readme.md를 같이 생성하도록 했기 때문임. # 만약에 이미 있는 2개의 branch에서 main branch만 제거하고, master branch만 남기고 싶을 경우에는 다음과 같이 수행. setting 들어가서, 그리고 위의 "2 branches" 아이콘 클릭해서 main branch 제거하면 됨. 2023. 7. 12.
git 연동 : 원격저장소(git) <-> 로컬저장소(내컴퓨터) 1. 우선, github 로그인해서 원격 저장소 생성 후 "html" 주소를 가져온다. 2. git bash 다운 https://git-scm.com/downloads - windows -> 64bit Git - Downloads Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp git-scm.com .. 2023. 7. 12.
728x90