목록Problem Solving/Programmers (10)
새발블로그
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12906 풀이방법 set을쓰려다가 숫자들이 정렬이 되어있으면 안돼서 사용하지 않기로 했고, 봤을 때 숫자들이 차례대로 등장하다가 바뀌고 하는 식이길래 바로 앞의 원소와 같지 않으면 Push_back하는 방법으로 구현하였다. 다른 사람의 신기한 풀이도 있었다. 풀이1 #include #include using namespace std; vector solution(vector arr) { vector answer; answer.push_back(arr[0]); for (int i=1; i
문제 https://school.programmers.co.kr/learn/courses/30/lessons/1845 풀이방법 일단 N/2 마리로 제한을 두고, set을 통해서 고를 수 있는 선택지를 줄였다 그 다음에 N/2보다 set의 길이가 같거나 작을 때 set size를 반환하고, 그렇지 않으면 N/2의 값을 반환하였다. 근데 이 로직을 다른 사람은 좀 더 간결하게 min을 사용해서 표현했길래 주워왔다 풀이1 #include #include using namespace std; int solution(vector nums) { int answer = 0; int N=nums.size(); int max_choice = N/2; set s(nums.begin(), nums.end()); if (s...
문제 https://school.programmers.co.kr/learn/courses/30/lessons/181924 풀이방법 swap() 함수를 사용하기 위해 algorithm 함수를 include했다 후에 범위 기반 for문을 이용해 swap 해주었다. 그런데 타입 추론이라는 게 있더라!! c++ 타입 추론 auto auto x = 10; //x의 타입은 int로 추론 decltype 인수로 지정한 표현식의 타입을 알아냄 double x = 10.0; decltyple(x) y =9.0; auto와 다르게, const 와 레퍼런스(&)를 제거하지 않는다. for(const auto& query : queires) 해당 for 문을 이렇게 해도 무방하다는 뜻이다 풀이 #include #include..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/181925 풀이방법 이전 수 조작하기1에서 다른 사람의 풀이를 보고 그 방법을 적용해보았다. (map 사용했다는 뜻!) 바로 전 인덱스의 값과 비교했을 때 그 차의 값에 따른 문자를 출력해야했으므로 map의 순서를 바꿔주었다. 다음 vector 를 순회하였다~~(배열이라 쓰려다가 vector가 뭔지 몰라서 찾아봄) Vector vector 컨테이너는 자동으로 메모리가 할당되는 배열 사용방법 - #include - vector [변수이름] : vector v; 생성자와 연산자 - vector v; 비어있는 벡터 - vector v(5); 기본값(0)으로 초기화된 5개의 원소를 가지는 벡터 - ve..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/181926 풀이방법 풀이 1 문제에서 요구하는 대로 함 풀이 2 STL map 사용 특정 문자에 대한 값이 변하지 않으니 맵을 사용해도 좋을 것 같아서 가져왔다. MAP : 각 노드가 key 와 value 쌍으로 이루어진 트리로, 중복을 허용하지 않음 first와 second가 있는 pair 객체로 저장되면 first -key, second-value로 저장 c++ map의 내부 구현은 레드블랙트리라합니다.... O(logn) map 특징 - 자료를 저장할 때 내부에서 자동으로 key를 중심으로 오름차순 - 내림차순 : map map이름 사용방법 - 헤더 : #include - 맵 선언 : ma..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/181930 풀이방법 문제 그대로 구현...해봤는데 다른 사람의 풀이가 괜찮아서 적음 풀이1 문제 그대로~~~ 풀이2 1. set을 이용해서 중복값을 제거하였다. set.size() ==3 : 세 수가 모두 다름 set.size() ==2 : 두 수 가 같음 set.size() ==3 : 세 수가 같음 set헤더를 적어야함 #include 2. #include 를 사용해서 제곱수를 계산함 pow(숫자,2) : 제곱 수 pow(숫자,3) : 세 제곱 수 풀이1 #include #include using namespace std; int solution(int a, int b, int c) { in..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/181938 풀이방법 C++ algorithm 헤더를 적용해보았다. 이 김에 STL 함수 정리... 1. SORT 함수 - quick sort -> O(nlgn) - sort(start주소, end 주소) [start, end] start 포함, end 불포함 2. max 함수 - max(m, n) - 최대값 반환 3. min 함수 - min(m, n) - 최솟값 반환 풀이 #include #include #include using namespace std; int solution(int a, int b) { int answer = 0; string numA = to_string(a); strin..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/181945 풀이방법 범위 기반 for문을 이용하여 문자열을 순회하였다. for (type element : element_array) 풀이 #include #include using namespace std; int main(void) { string str; cin >> str; for(char ch : str) cout