728x90
반응형

C++ 9

C++ 끄적끄적..

책 보면서 처음 봤던 것들 노트에 끄적였던 거 블로그에 정리! shring_to_fit 용량을 실제 벡터 크기로 줄일 수 있음 list 강점 중간에 삽입하고 삭제하는 비용이 덜 비쌈 set 집합에 속하는 값 정보 저장 내부적으로 트리 정렬 -> O(n) find와 count로 검사 반복 필요 -> find, 아니라면 count * count는 0,1 * mutilset은 개수 map 연관 컨테이너 값이 키(key)와 관련 map pair o(log n) 해시테이블 매우 효율적으로 검색할 수 있는 컨테이너 O(1) 시간 복잡도 ostream_iterator 출력 스트림을 위한 최소한의 반복자 인터페이스 구축 unique 수치 소프트웨어에서 매우 유용 시퀀스의 중복된 항목 제거 (정렬 되어있기) random..

C++ 2023.06.29

C++ 기초2 (표준벡터, valarray)

배열용 컨테이너 표준 벡터 std::vector는 표준 라이브러리에 속하며 클래스 템플릿으로 구현 그럼에도 불구하고 배열과 매우 유사하게 사용 가능 예제 #include int main() { std::vector v(3), w(3); v[0] = 1; v[1] = 2; v[2] = 3; w[0] = 7; w[1] = 8; w[2] = 9; } 벡터의 크기는 컴파일할 때 알 필요가 없음 벡터는 존재하는 동안 크기를 조정할 수도 있음 C의 배열 및 포인터와 달리 벡터 인수는 크기를 알고 있으므로 일치하는지 확인 가능 배열의 크기는 나중에 템플릿을 사용해 추론 가능 벡터는 복사 가능하며 함수를 통해 반환 가능 이렇게 하면 보다 자연스러운 표기법을 사용할 수 있음 valarray valarray는 요소별 연산..

C++ 2023.06.02

[C++/프로그래머스42885] 구명보트

문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요..

[C++/프로그래머스81301] 숫자 문자열과 영단어

문제 설명 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다. 제한사항 1 ≤ s의 길이 ≤ 50 s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니..

[C++/프로그래머스12973] 짝지어 제거하기

문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한사항 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져 있습니다. ..

C++ 기초 1 (스트림, 서식지정, 포인터, 스마트포인터, 레퍼런스)

일반적인 스트림 개념 스트림은 화면, 키보드 및 파일에만 국한하지 않는다. 모든 클래스는 istream, ostream, iostream에서 파생할 경우 스트림으로 사용할 수 있으며 해당 클래스의 함수에 대한 구현을 제공한다. ostream의 레퍼런스를 인수로 사용해 모든 종류의 출력 스트림을 허용하는 출력 함수를 작성할 수 있다. #include #include #include void write_something(std::ostream& os) { os

C++ 2023.05.23

[C++/프로그래머스12944] 평균 구하기

문제 설명 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한 사항 - arr은 길이 1 이상, 100 이하인 배열입니다. - arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr return [1,2,3,4] 2.5 [5,5] 5 제출 코드 #include #include using namespace std; double solution(vector arr) { double answer =0; for(int i=0; i

[C++/프로그래머스12933] 정수 내림차순으로 배치하기

문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n은 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 - n은 1이상 8000000000 이하인 자연수입니다. 입출력 예 n return 118372 873211 제출 코드 #include #include #include using namespace std; long long solution(long long n) { long long answer = 0; string str = to_string(n); sort(str.begin(), str.end(), greater()); answer = stoll(str); return answer; } ..

[C++/프로그래머스12912] 두 정수 사이의 합

문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소 관계는 정해져있지 않습니다. 입출력 예 a b return 3 5 12 3 3 3 5 3 12 제출 코드 #include #include using namespace std; long long solution(int a, int b) { long long answer = 0; if (a==b) { return a; } else i..

728x90
반응형