본문 바로가기

분류 전체보기

(484)
[프로그래머스] 힙(Heap) - 더 맵게 / 우선순위큐(priority_queue) 문제 풀이 #include #include #include //heap 구현 #include // greater using namespace std; int solution(vector scoville, int K) { int answer = 0; priority_queue pq; for(int i =0; i < scoville.size(); i++){ pq.push(scoville[i]); } while(pq.top() < K){ if(pq.size()
[프로그래머스]JOIN - 없어진 기록 찾기 / LEFTJOIN, 서브쿼리(Subqueries) 문제 풀이 1 SELECT ANIMAL_ID, NAME FROM ANIMAL_OUTS WHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_INS) WHERE 절 서브 쿼리를 사용한 풀이이다. 개인적으로 JOIN을 이용한 풀이보다 더 간단하다고 생각했다! 서브 쿼리(Subqueries) 서브 쿼리란 하나의 질의문 내부에 하나 이상의 다른 질의문이 포함되어 그 결과를 이용하거나, 그 결과와 연관된 자료를 출력하기 위해 사용하는 질의문을 의미한다. From 절에 사용되는 서브 쿼리를 인라인 뷰(inline View)라고 하며 Where 절에 사용되는 서브 쿼리를 중첩 서브 쿼리(Nested/Correlated Subquery)라고 한다. 풀이 2 (JOIN) SELE..
[프로그래머스] 단체사진찍기 / DFS, assign, next_permutation 문제 풀이 #include #include #include #include #include // abs using namespace std; int answer; vector names; vector visited; vector conditions; void dfs(int n, string inputstr); bool check(string str); int solution(int n, vector data) { answer = 0; names = {'A', 'C', 'F', 'J', 'M', 'N', 'R', 'T'}; visited.assign(8,false); // vector 초기화 conditions = data; dfs(0, ""); return answer; } bool check(strin..
[프로그래머스] 스택/큐 - 기능개발 문제 풀이 1 #include #include #include using namespace std; vector solution(vector progresses, vector speeds) { vector answer; vector days; for (int i = 0; i = days[i]) { count++; } else { answer.push_back(count); count = 1..
[프로그래머스] IS NULL, IS NOT NULL, IF NULL 문제 1 이름이 없는 동물의 아이디 구하기 풀이 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL 문제 2 이름이 있는 동물의 아이디 구하기 풀이 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL 문제 3 입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요. 풀이 SELECT ANIMAL_TYPE, IFNULL(NAME, "No name"), SEX_UPON_INTAKE FROM ANIMAL_..
[프로그래머스] GROUP BY - 입양 시각 구하기(2) / 매 시간대별 통계, JOIN, IFNULL 문제 풀이 SELECT T1.HOURS AS HOUR, IFNULL(T2.COUNT,0) AS COUNT FROM (SELECT @N := @N + 1 AS HOURS FROM ANIMAL_OUTS, (SELECT @N := -1 FROM DUAL) NN LIMIT 24 )T1 LEFT JOIN (SELECT HOUR(DATETIME) AS HOUR, COUNT(*)AS COUNT FROM ANIMAL_OUTS WHERE HOUR(DATETIME) BETWEEN '0' AND '24' -- 없으면 오류남! GROUP BY HOUR(DATETIME) ORDER BY HOUR(DATETIME))T2 ON T1.HOURS = T2.HOUR 해결 과정 1. 0~23까지 증가하는 컬럼(테이블에서의 각 열에 해당)..
[프로그래머스] 124 나라의 숫자 / insert 문제 풀이 #include #include using namespace std; string solution(int n) { //3진법 string answer = ""; vector nara = {"1","2","4"}; while(n>0){ n = n-1; answer.insert(0,nara[n%3]); n = n/3; } return answer; } 숫자가 1, 2, 4 뿐이므로 3진법과 동일한 방법이라 생각하고 풀었다. 3진수랑 비교했을 때 각 자리다 1씩 차이가 생기기 때문에 -1을 해주었다. 다른 사람 풀이 #include #include using namespace std; string change124(int no) { string answer = ""; int a; while(no >..
[프로그래머스] 멀쩡한 사각형 / 최대공약수, 유클리드 호재법 문제 풀이 #include #include #include using namespace std; long long solution(int w,int h) { long long answer = 1; long long a = min(w,h);// 최대공약수 (모서리 모서리로 이어지는 네모의 개수) for(; a>0; a--){ if(w%a == 0 && h%a == 0) break; } long long ws = w/a, hs = h/a; return answer = (long long)w*h - (ws + hs - 1)*a; } 처음엔 최대 공약수를 int값으로 구했기 때문에 오류가 발생했다. 범위 오류가 생길 수 있기 때문에 long long 인지 int인지 잘 보고 구할 것! 최대공약수를 사용하는 이유..