programmers lv.1
1. 정수 내림차순으로 배치하기
c++의 algorithm header에 있는 sort 함수의 마지막 열(정렬 하는 방식)에 greater<int>(), less<int>()를 숙지해 두자.
* string도 정렬이 된다. 알아두자. 이 경우, to_string()함수와 stol함수(자료형 변환 함수)를 기억해 두자.
2. 자연수 뒤집어 배열로 만들기
자릿수만 잘 계산해 두면 된다. 자릿수 계산은 알겠지만, 외워두자.
while(n != 0){
n % 10; n /= 10;
}
3. 자릿수 더하기
자릿수 구하기만 하면 된다. 기초문제.
4. 이상한 문자 만들기
string의 split은 외우자.
#include <sstream>
vector<string> split(string input, char delimiter) {
vector<string> result;
stringstream ss(input);
string buffer;
while (getline(ss, buffer, delimiter)) result.push_back(buffer);
return result;
}
또 문자열 대문자/소문자 변경 시 toupper, tolower 함수를 이용하자.
그리고 문제를 잘 읽자.
5. 시저 암호
이거 왜 안도ㅑㅑㅑㅑㅑㅑㅑㅑ
-> 프로그래머스 내부에 뭔가 문제가 있었나 보다. 그리고 isalpha 함수 인터넷에 있는 대로 돌아가지 않으니, 내가 직접 만들어서 쓰자.
6. 수박수박수박수박수?
기초문제였다.
7. 문자열을 정수로 바꾸기
기초 문제였다. 마찬가지로 string <-> 숫자 자료형 변환을 기억하자.
8. 서울에서 김서방 찾기
기초 문제였다. string <-> 숫자 자료형 변환 (to_string 등)을 기억하자.
9. 문자열 내 p와 y의 개수
기초 문제였따. 제발 문제 좀 잘 읽자.
10. 문자열 다루기 기본
기초 문제였다. isdigit() 함수로 string의 각 char이 숫자인지 아닌지 알 수 있다.
11. 나누어 떨어지는 숫자 배열
기초 문제였다.
12. 두 정수 사이의 합
[(초항+막항) * 항 개수 / 2]
시그마 공식으로 구하면 된다.
13. 같은 숫자는 싫어
시간복잡도를 조금 알아야 한다. 약 1초에 1억 번 연산할 수 있다고 생각하면 된다.
O(nlogn)의 경우 입력 크기는 최대 5백만,
O(n^2)의 경우에는 최대 1만,
O(n^3)의 경우에는 500,
O(2^n)의 경우에는 20,
O(n!)의 경우에는 10
이 상한이다.
* vector의 중복제거는 unique라는 함수를 이용해 가능하다. unique 함수는 arr.begin()부터 arr.end()까지 '연속해서 중복으로 나오는 것'들을 vector의 제일 뒷자리로 미뤄주는 기능이다. 아래 코드에서 erase(iter1, iter2) 이렇게 되어있는데 이건 iter1부터 iter2까지 지운다는 것이고, iter1자리에 unique 함수가 들어가 있으므로 '연속으로 중복되어 나오는 것은 지우고, 제일 뒷자리로 미룬 쓰레기값들을 모두 삭제하는 코드'이다. 만약 vector 전체에서 unique하게 만들고 싶다면 sort 이후 unique, erase를 쓰면 될 것이다.(아니면 pq나 map같은거 써도 되고)
arr.erase(unique(arr.begin(), arr.end()),arr.end());
14. 가운데 글자 가져오기
c++은 문자열 처리가 귀찮다. string을 처리해 주는 함수가 python에 비해 많이 적기 때문이다. 조금이라도 더 편하기 위해 c++의 string에 내재되어있는 함수를 싹 정리 한 번 해야될 필요성이 있는 것 같다.
15. 문자열 내 마음대로 정렬하기
사용자 정의 comp 함수의 정확한 방법을 기억해 둬야 겠다.
또, 전역변수 사용에 대해 거부감을 조금 줄이자. PS 할 때는 쓰면 편하다.
'PS > PS Log' 카테고리의 다른 글
22.03.26. 풀었던 문제들 (0) | 2022.06.22 |
---|---|
22.03.25. 풀었던 문제들 (0) | 2022.06.22 |
22.03.23. 풀었던 문제들 (0) | 2022.06.22 |
22.03.22. 풀었던 문제들 (0) | 2022.06.22 |
21.06.24. 풀었던 문제들 (0) | 2022.06.22 |