본문 바로가기

Algorithm/TIP

(15)
[c++] string내 substring 있는지 찾아내기 (find) 문자열 내 특정 문자열이 존재하는지 찾기 #include string text = "1234"; string sub = "1"; if (text.find(sub) != string::npos) // sub가 존재한다 if (text.find(sub) == string::npos) // sub가 존재하지 않는다 find 는 O(N)의 시간 복잡도를 가지기 때문에 어떤 상황에서는 for문으로 직접 구현하는게 좋을 수도 있다
형변환 String string to int / double / long / float #include #include string int_v = "1234"; string double_v = "12.34"; int i = stoi(int_v); double d = stod(double_v); Int int to string #inlcude string a = to_string(40); Char 특별한 형변환 char를 의미를 가진 int로 변경하고 싶은 경우 char c1 = 'a'; char c2 = '1'; int i1 = c1 - 'a'; // i1 = 0 int i2 = c2 - '1'; // i2 = 0; char c3 = 'b'; int i3 = c3 - 'a'; // i3 = 1
[SQL] WITH(RECURSIVE) 가상의 테이블 WITH 메모리상에 가상의 테이블을 저장할 때 사용된다 (1회만사용가능) WITH TMP AS ( SELECT A,B,C FROM T WHERE... ) SELECT ... FROM TMP #여기서 사용가능 WHERE ... WITH RECURSVIE recursive 말 그대로, 자기 자신의 값을 참조하여 값을 가지는 테이블이다 WITH RECURSIVE TMP AS( SELECT 0 AS NUM # 초기값 0 UNION ALL SELECT NUM+1 FROM TMP # 초기값 0을 이용하여 테이블 생성 WEHRE NUM < 10 # 반복 정도 ) RECURSIVE 사용시에는 UNION ALL이 필수적이며, WHERE를 이용하여 정지 조건을 설정한다 이를 이용한 문제 프로그래머스 SQL 고득점 Kit ..
SQL 고득점 Kit [JOIN 시리즈] 그룹별 조건에 맞는 식당 목록 출력하기 -- 코드를 입력하세요 SELECT A.MEMBER_NAME, B.REVIEW_TEXT, B.REVIEW_DATE FROM MEMBER_PROFILE AS A, REST_REVIEW AS B WHERE A.MEMBER_ID = B.MEMBER_ID AND B.MEMBER_ID IN ( SELECT S.MEMBER_ID FROM ( SELECT MEMBER_ID, COUNT(MEMBER_ID) AS COUNT FROM REST_REVIEW GROUP BY MEMBER_ID ORDER BY COUNT DESC LIMIT 1 ) AS S) ORDER BY REVIEW_DATE #그 중 최대 # SELECT S.MEMBER_ID # FROM ( # SELECT MEMBER..
TIP) 'b' - 'a' = 1 말그대로
[c++] compare 함수 (sort / priority queue) a>b sort: 큰거부터 pq : 작은거부터 ab ; //내림차순 } sort(arr.begin(), arr.end(), compare); 기본 정렬은 오름차순 정렬(1,2,3...) 이며, 내림차순 정렬은 다음과 같다 sort(arr.begin(), arr.end(), greater()); PRIORITY QUEUE priority queue의 compare는 true를 반환해야 swap 부모와 자식의 위치가 swap된다 struct compare{ bool operator()(int a, int b){ return a>b; // true인 경우 부모와 자식이 바뀐다 } }; int main(){ priority_queue pq; // -> 가장 작은 값이 root } struct compare{ b..
[c++] get() getline()함수 - 특정 문자가 나올때 까지 입력받기 getline에는 두가지가 있는데 iostream의 cin.getline() 문자 배열로 마지막 글자가 '\0'인 string을 입력받는데 사용한다 마지막 \0은 null로 바꾸고 n-1 까지만 저장한다 delim을 따로 지정해주면, '\0'대신 해당 글자를 사용한다 cin.getline(char* str, streamsize n); cin.getline(char* str, streamsize n, char delim); //변수 주소, 최대 입력 가능 문자수, 종결 문자 string의 getline() 길이의 제한 없이 입력받을 수 있다는 점에서 다르다. 원하는 구분자(delimeter)를 만날떄 까지 모든 문자열을 입력받아 하나의 string 객체에 저장한다. getline(istream& is, s..
[c++] unique함수 코딩테스트에서 중복을 제거할 일이 있었는데 레퍼런스로 unique라는 함수가 있다는 것을 알게되었다 근데 사용방법을 몰라서 못썼음 ㅠ..ㅋㅋ unqiue함수 헷갈릴 수 있지만, unique함수는 중복을 찾아준다! 느낌보다는 중복되지 않는 원소들을 찾아준다 는게 조금더 정확하다 vector배열 내에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수이다. 하지만 서로 이웃하면서 중복인 원소들에 대해서만 작동하기 때문에 제대로 사용하기 위해서는 sort함수를 사용한 후에 사용해주어야 한다. vector arr = {2, 2, 3, 3, 1, 5, 6, 6}; sort(arr.begin(), arr.end()); //1, 2, 2, 3, 3, 5, 6, 6 unique(arr.begin(), arr.begin..

728x90