본문 바로가기

분류 전체보기

(485)
[프로그래머스] 다음 큰 숫자 - bitset 문제 풀이 #include #include using namespace std; int getOneCount(int num){ int num_count = 0; while(num > 0){ if(num % 2 == 1) num_count ++; num /= 2; } return num_count; } int solution(int n) { int count = 0; int answer = 0; count = getOneCount(n); for(int i = n+1 ; ;i++){ int i_count = getOneCount(i); if(i_count == count ) { answer = i; break; } } return answer; } 다른 사람 풀이 #include using namespace..
[UNIX] grep, find grep grep 파일 내에서 지정한 패턴이나 문자열을 찾은 후에, 그 패턴을 포함하고 있는 모든 행을 출력하는 명령어. 하나 이상의 파일로부터 변수, 또는 함수명을 찾을 때 많이 사용된다. 기본 문법 grep [옵션] [패턴] [파일] 파일 옵션 파일 옵션에는 여러 개의 파일명이 들어갈 수 있다. * : 현재 디렉터리 내에 있는 모든 파일 탐색 *. log : 특정 확장자를 가진 모든 파일 탐색 / : 최상위 디렉터리 내에 있는 모든 파일 탐색 옵션 옵션 의미 -r 하위 디렉토리까지 검색한다 -i 대소문자 구분을 하지 않는다. -l 패턴이 포함된 파일의 이름을 출력한다. -v 패던과 일치하지 않는 행만 출력한다. -c 패턴이 일치하는 행의 수를 출력한다 -w 패턴이 전체 단어와 일치하는 행만 출력한다...
[프로그래머스] 3 x n 타일링 - MOD 모듈러 연산 문제 풀이 #include #include #include using namespace std; // mod 알고리즘 int solution(int n) { long long mod = 1000000007; vector v = {0,3,11}; if( n%2 != 0) return 0; for(int i=3; i0; j--){ sum += (v[j] * 2) % mod; } v.push_back(sum%mod); } return v[n/2]% mod; } n이 홀수일 경우는 타일을 놓을 수 있는 방법이 없다. 0을 리턴한다. f(2)의 타일을 놓을 수 있는 방법은 3가지이다. f(4)는 이전의 모습에서 타일이 2개 추가되었으므로 f(이전 단계) * f(2)인데, f(4) 이상일 때부터는 특수한 타일 배치..
[프로그래머스] 2 x n 타일링 - 피보나치수열 문제 풀이 #include #include using namespace std; // 피보나치수열 // 1 > 2 > 3 > 5 > 8 > ... int num = 1000000007; int solution(int n) { int bf = 1; int af = 1; int temp; for(int i=1; i
[프로그래머스] 가장 큰 정사각형 찾기 - DP 문제 풀이 #include #include #include using namespace std; // 0과 1로 이루어짐. //[[0,0,0,0]] : 0 , [[0,0,1,0]] : 1 // DP 다이나믹 프로그래밍(또는 동적 계획법) int solution(vector board) { int max = 0; int space[1001][1001] = {0}; for(int i=0; i
[프로그래머스] 캐시 문제 풀이 #include #include #include using namespace std; // 대소문자 구분을 하지 않는다 // transform(str.begin(), str.end(), str.begin(), ::tolower); // 캐시 교체 알고리즘은 LRU(Least Recently Used) int solution(int cacheSize, vector cities) { int answer = 0; vector cache; if(cacheSize == 0) return cities.size()*5; for(int i=0; ibegin(), it->end(), it->begin(), ::tolower); bool flag = false; for(vector::iterator itt = ..
[Oracle] 자릿수 채우기, 공백 채우기 - LPAD, RPAD 숫자형 문자의 경우 문자의 길이를 특정한 값으로 맞춰야 하는 경우가 있는데, 이때 LPAD, RPAD를 사용할 수 있다. LPAD는 왼쪽, RPAD는 오른쪽부터 총 문자길이 만큼 지정한 문자를 채운다. LPAD LPAD(값, 총 문자 길이, 문자) LPAD 함수는 지정한 길이 만큼 왼쪽부터 특정문자로 채워진다. 문자를 지정하지 않을 경우 공백(Space)으로 문자가 채워진다 문자 수 : 총 문자길이 - 값의 length 예시 --Space를 . 으로 표현하였다. LPAD('123', 5) -- ..123 LPAD('123', 5, ' ') -- ..123 LPAD('123', 5, '0') -- 00123 LPAD('123', 5, 'x') -- xx123 RPAD RPAD(값, 총 문자 길이, 문자) ..
[Oracle] 조회 순번 매기기 - ROWNUM, ROW_NUMBER() ROWNUM SELECT 해온 데이터에 일련번호를 매기며, 무조건 1번부터 차례대로 붙여진다. 특정 집합에서 원하는 만큼의 행만 가져오고 싶을 때 활용할 수 있다. 순서가 결정 된 후 ORDER BY로 정렬되므로 ROUNUM과 ORDER BY를 함께 사용하면 순서가 뒤섞일 수 있다. 원하는 결과를 얻기 위해선, 서브 쿼리 결과(ORDER BY)에 ROWNUM을 매겨야 한다. 예시 SELECT * FROM TABLE WHERE ROUNUM = 20 -- 20살 이상인 사람의 데이터를 ROUNUM을 붙여 추출 SELECT ROWNUM, T1.* FROM ( SELECT * FROM TABLE ORDER BT AGE) T1 -- 나이순으로 ROWNUM을 붙여서 데이터 추출 ROW_NUMBER() ROW_NUM..