목록전체 글 (83)
천천히 빛나는
프로그래머스 SQL 고득점 Kit의 SELECT 문제입니다. https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit 1. 12세 이하인 여자 환자 목록 출력하기 SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO FROM PATIENT WHERE AGE =2 ORDER BY USER_ID, PRODUCT_ID DESC; Group by : 특정 속성의 값이 같은 투플들을 모아 그룹을 생성 Having : Group BY 절에 대한 조건을 제시 3. 인기있는 아이스크림 SELECT FLAVOR FROM FIRST_HALF ORDER BY TOTAL_ORDER DESC, ..
SELECT FNAME, LNAME FROM EMPLOYEE WHERE SUPER_SSN IS NULL; IS NULL 또는 IS NOT NULL을 이용하여 속성 값이 NULL인지 검사할 수 있다 중첩질의(Nested query) SELECT DISTINCT ESSN FROM WORKS_ON WHERE (PNO, HOURS) IN (SELECT PNO, HOURS FROM WORKS_ON WHERE ESSN=‘333445555’); SSN이 3344555인 사원이 일하는 프로젝트와 일한 시간의 조합이 동일한 사원의 SSN을 검색하는 쿼리이다. 중첩질의에서는 속성의 이름이 모호해질 수 있으므로 AS 를 사용하여 별명을 작성하는 것이 좋다. 여기서 내부 질의는 IN 이후 SELECT 문이 되고, 내부질의 -..
SELECT 문 SELECT 필드이름 FROM 테이블이름 WHERE 조건 Select를 사용하여 조건에 따른 데이터를 검색할 수 있다 SELECT * FROM 테이블명; *을 이용해서 모든 데이터를 출력할 수 있다 SELECT * FROM 테이블명 WHERE 속성1 BETWEEN 값1 AND 값2; SELECT * FROM Company WHERE age BETWEEN 23 AND 35; BETWEEN은 속성 1의 값이 값 1과 값 2 사이에 있는 것을 모두 출력해준다 SELECT * FROM 테이블명 WHERE 속성 1 IN 조건; SELECT * FROM Company WHERE Age IN (23, 24, 25); SELECT * FROM Company WHERE Age = 23 OR Age = 2..
1. 개미 전사 개미 전사를 위해 식량창고 N개에 대한 정보가 주어졌을 때 얻을 수 있는 식량의 최댓값을 구하는 프로그램을 작성하는 문제이다. N=4일 때 식량을 선택할 수 있는 경우의 수는 8가지이다. 최적의 해는 7번째(3+5=8)가 된다. a_i를 i번째 식량창고까지의 최적의 해라고 정의하도록 하겠다. i번째 식량창고에 대해서 털지 안 털지의 여부를 결정하기 위해서는 2가지 경우 중에서 더 많은 식량을 털 수 있는 경우를 선택하면 된다. int n; int food[101]; int dp[101]; int main() { cin >> n; for (int i = 1; i > food[i]; } dp[1] = food[1]; dp[2] = max(food[1], food[2]); for (int i ..
참고 영상: https://www.youtube.com/watch?v=5Lu34WIx2Us 다이나믹 프로그래밍 (Dynamic Programming, 동적 계획법) 메모리를 적절히 사용하여 수행 시간 효율성을 향상시키는 방법 이미 계산된 결과는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 한다. 나중에 해당 결과가 필요할 때 기록된 결과를 그대로 사용한다. 다이나믹 프로그래밍의 구현은 탑다운(하향식)과 보텀업(상향식) 방식으로 구성된다. 다이나믹 프로그래밍을 사용하는 조건은 다음과 같다. 1. 최적 부분 구조 (Optimal Substrcture) 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제를 해결할 수 있다. 2. 중복되는 부분 문제 (Overlapping Subpr..
본 포스팅에서는 [스타트와 링크, 마법사 상어와 블리자드, 마법사 상어와 복제, 주사위 굴리기 2]를 다룹니다. 14889. (스타트와 링크) 오늘은 스타트링크에 다니는 사람들이 모여서 축구를 해보려고 한다. 축구는 평일 오후에 하고 의무 참석도 아니다. 축구를 하기 위해 모인 사람은 총 N명이고 신기하게도 N은 짝수이다. 이제 N/2명으로 이루어진 스타트 팀과 링크 팀으로 사람들을 나눠야 한다. 축구를 재미있게 하기 위해서 스타트 팀의 능력치와 링크 팀의 능력치의 차이를 최소로 하려고 한다. #include #include using namespace std; int N; int S[21][21]; vector v; int totalSum; int minDiff = -1; void makeTeam(in..
본 포스팅에서는 [상어초등학교, 스타트택시, 마법사 상어와 파이어스톰, 마법사 상어와 비바라기]를 다룹니다. 21608. (상어 초등학교) 학생의 만족도의 총 합을 구해보자. #include #include #include #include using namespace std; int N; int classRoom[21][21]; int dx[] = { -1, 0, 0, 1 }; int dy[] = { 0, -1, 1, 0 }; struct Student { int s; int sLike[4]; }; queuestudents; Student resultRoom[21][21]; void assignSeat() { int maxLike = -1; int maxEmpty = -1; pair tempLike; p..
본 포스팅에서는 [이차원 배열과 연산 , 컨베이어 벨트 위의 로봇, 마법사 상어와 파이어볼, 마법사 상어와 토네이도]를 다룹니다. 17140. (이차원 배열과 연산) 배열 A에 들어있는 수와 r, c, k가 주어졌을 때, A[r][c]에 들어있는 값이 k가 되기 위한 최소 시간을 구해보자. #include #include #include #include using namespace std; int c, r, k; int A[101][101]; int cRnum; int cCnum; int result; void Calculation() { if (A[r][c] == k) { cout 등장횟수의 오름차순으로 정렬된다. 등장횟수가 같으면 그 다음 값인 수의 오름차순으로 정렬된다. 4) 기존 저장되어있던 값을..
본 포스팅에서는 [주사위 굴리기, 아기상어, 나무 재테크, 2048, 낚시왕]을 다룹니다. 14499. (주사위 굴리기) 주사위는 지도의 바깥으로 이동시킬 수 없다. 만약 바깥으로 이동시키려고 하는 경우에는 해당 명령을 무시해야 하며, 출력도 하면 안 된다. #include #include #include using namespace std; int n, m, x, y, k; int dx[] = { 0, 0, -1, 1 }; int dy[] = { 1, -1, 0, 0 }; int dice[7]; int map[20][20]; vectorcmd; pair now; bool change(int d) { int nx = now.first + dx[d - 1]; int ny = now.second + dy[d..
본 포스팅에서는 [시험감독, 연산자 끼워넣기, 로봇 청소기, 톱니바퀴, 미세먼지 안녕!, 감시, 뱀]을 다룹니다. 13458. (시험 감독) 각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오. #include #include #include using namespace std; int n; int a; double b, c; vectorv; int main() { cin >> n; while (n--) { cin >> a; v.push_back(a); } cin >> b >> c; long long total = v.size(); for (int i = 0; i 0) total += ..