알고리즘 챌린지 55

패스트캠퍼스 챌린지 47일차

패켐 제작문제 해설 8,9 문제 내용 링크 참조 문제 1 : 가희의 고구마 먹방 (https://www.acmicpc.net/problem/21772) - 난이도 중, 완전탐색, 백트래킹, DFS • 핵심 아이디어 - 전형적인 완전 탐색 문제 - 깊이 우선 탐색(DFS)을 이용하여 모든 경우의 수 계산 - 각 위치에서 상,하,좌,우 이동 가능 - 입력 조건 상 10칸 까지도 이동할 수 있으므로, 최대 약 4^10개의 경우의수 존재 문제 2 : 가희와 프로세스 1 (https://www.acmicpc.net/problem/21773) - 난이도 중, 우선순위 큐, 자료구조 • 핵심 아이디어 - 우선순위 큐를 활용한 스케줄러 구현 문제 - 우선순위는 다음과 같이 정의되며, 이를 위해 별도 클래스 구현 필요 ..

패스트캠퍼스 챌린지 46일차

패켐 제작문제 해설 6,7 문제 내용 링크 참조 문제 1 : 가장 긴 짝수 연속한 부분 수열 (small) (https://www.acmicpc.net/problem/21857) - 난이도 하, 다이나믹 프로그래밍 핵심 아이디어 - 길이가 N인 수열에서 K개의 원소를 삭제할 수 있다 - 결과적으로 짝수로 이루어진 연속한 부분 수열 중에서 가장 긴 것을 계산 - 본 문제는 다이나믹 프로그래밍으로 해결 가능 1. 짝수일 경우 : D[i][j] = D[i][j-1] + 1 왼쪽과 연결 2. 홀수일 경우 : D[i][j] = D[i-1][j-1] 왼쪽위와 연결 문제 2 : 가장 긴 짝수 연속한 부분 수열(large) (https://www.acmicpc.net/problem/21862) - 난이도 하, 투 포인..

패스트캠퍼스 챌린지 45일차

패켐 제작문제 해설 4,5 문제 내용 링크 참조 문제 1 : 문자열 제거 (https://www.acmicpc.net/problem/21922) - 다이나믹 프로그래밍, 난이도 중 구현 아이디어 인덱스 0 1 2 3 4 5 6 7 8 9 문자열 a b c x y z x a b c - 문자 지우기, abc, xyz 로 문제를 나누어서 풀이한다 문제 2 : 문자열 제거 (https://www.acmicpc.net/problem/21942) - 자료구조, 구현 , 난이도 중 구현 아이디어 1. 부품을 얼마나 오래 빌렸는지 분 단위로 계산 해아한다 - 날짜 정보가 담긴 문자열을 타임 스탬프(timestamp)로 변경 - 타임스탬프 : 2021-01-01 00:00 으로부터 몇 분 지났는지 2. 대여 기록을 관리..

패스트캠퍼스 챌린지 44일차

패스트 캠퍼스 자체 문제 제작 - 2,3 문제 1 : 학부 연구생 민상( https://www.acmicpc.net/problem/21922 ) - 문제 내용 링크 참조 구현 아이디어 1. 바람이 물건에 부딪혔을 때, 방향이 바뀌는 기능을 정확히 구현 - 바람의 현재 상태를 (i,j 방향) 으로 표현 - 방향은 상,하,좌,우 가 존재 2. 시뮬레이션을 위해 이미 방문한 적이 있는 위치를 기록 - 따라서 방문된 위치 정보를 3차원 배열 visited[i][j][dir] 형태로 관리 단순한 시뮬레이션 문제이므로, 반복문을 사용하거나 DFS/BFS를 이용하여 자신의 기호에 따라 탐색 진행 문제 2 : 곡예비행( https://www.acmicpc.net/problem/21923 ) - 문제 내용 링크 참조,..

패스트캠퍼스 챌린지 42일차

조인 (inner join, outer join, self join) JOIN 예제 tProduction 테이블은 직원들이 제품을 생산한 정보가 들어잇는 테이블이다 tOrder 테이블은 제작된 제품을 고객들이 주문한 정보가 들어있는 테이블 tItem 테이블은 생산하기 위한 제품들의 정보가 들어있는 테이블 2022년 3월 20일 기준 현재 판매 가능한 공책의 재고량을 구하시오 (반품되어 돌아온 공책의 경우 재판매 하지 않는다.) 정답 select tBase.IName as 제품명, (tBase2.PCount - tBase.OCount) as 재고량 // 총 생산량 - 제품 판매량 from ( select tit.IName, sum(tpr.PCount) as OCount from tProduction as ..

패스트캠퍼스 챌린지 41일차

SQL 순위 집계 예제 1. RANK 예제 tProduction 테이블은 직원들이 제품을 생산한 정보가 들어있는 테이블이다 생산량이 많은 직원 기준 상위 10명에게 상여금을 준다 해당하는 직원 번호와 총 생산량을 상위 10명까지 순위를 매겨 출력하라 만약 공돈 순위가 있다면 다음 순위는 중복 된 순위의 수만큼 떨어진다 // rank 함수 사용 정답 select tpr.enumber as 직원번호, sum(tpr.pcount) as 총_생산량, rank() over(order by sum(tpr.pcount) desc) as 총_생산량_순위 // 순위를 같이 출력 from tProduction as tpr group by tpr.enumber limit 10 2. Row_num 예제 tProduction ..

패스트캠퍼스 챌린지 40일차

SQL 분기문(case-when), 집합연산 (union, union all), 서브쿼리 (column,from, where) 분기문 CASE-WHEN 예제 tProduction 테이블은 직원들이 제품을 생산한 정보가 들어있다 판매 가능한 제품들의 재고를 파악하기 위해 2020년 2월에 생산된 양 확인 문구류 제품 먼저 파악, 해당 제품명과 제품들의 총 생산량 출력 제품코드 : INumber, I1001 = 가위, I1002 = 풀 I1003 = 공책 I1004 = 볼펜 I1005 = 지우개 정답 select case when tpr.INumber = 'I1001' then '가위' when tpr.INumber = 'I1002' then '풀' when tpr.INumber = 'I1003' then ..

패스트캠퍼스 챌린지 39일차

예제를 통한 기본 조건 검색 및 정렬, 그룹제어 예제 1) tEmployee 테이블은 직원들의 정보가 들어있는 테이블이다. 문구 생산부(DNumber : D1001)와 가구생산부(DNumber : D2001)의 직원 정보를 확인 하려한다. 위에 해당하는 직원들의 직원명과 입사일을 입사일이 빠른 순서대로 출력하라 입사일은 연,월,일 까지만 출력되어야 한다. 정답 SELECT tem.EName AS 직원명, TO_CHAR(tem.StartDate,'YYYY-MM-DD') AS 입사일 // TO_CHAR 함수로 입사일 포매팅 FROM tEmployee AS tem WHERE tem.DNumber IN('D1001','D2001') // DNumber가 D1001, D2001 인것만 조회 ORDER BY tem..

패스트캠퍼스 챌린지 38일차

SQL 함수 집계함수 1. MAX 컬럼명 - 명시된 컬럼 내 값 중 최대값 반환 2. MIN 컬렴명 - 명시된 컬럼 내 값 중 최소값 반환 3. COUNT 컬렴명 - 명시된 컬럼 내 값의 전체 행 수 반환 (NULL 값 제외) 4. SUM 컬럼명 - 명시된 컬럼의 데이터 타입이 숫자일 경우, 해당 컬럼 내 모든 데이터 합 반환 (NULL 값 제외) 5. AVG 컬럼명 - 명시된 컬럼의 데이터 타입이 숫자일 경우, 해당 컬럼 내 모든 데이터 평균 반환 (NULL 값 제외) 사용법 SELECT 집계함수(컬럼명) FROM 테이블 문자열 함수 1. SUBSTRING(string, int, int) - 첫번째 명시한 문자열의 부분 문자열 잘라오기 2. LTRIM , RTRIM - 명시한 문자열의 좌측/우측 공백을..

패스트캠퍼스 챌린지 37일차

SQL 문법 설명 (순위 집계 및 조인) 순위 집계 함수 1.RANK - 동일한 값에는 동일한 순위, 다음 순위는 동일한 순위 개수만큼 건너 뛰어 등수 매김 2. DENSE_RANK - 동일한 값에는 동일한순위, 다음 순위는 바로 그 다음 순위가 나옴 3. ROW_NUMBER - 동일한 값에도 먼저 나온순서대로 등수 부여 SELET 컬럼, RANK 함수 OVER(PARTITION BY 컬럼명 ORDER BY 컬럼명 정렬차순) FROM 조인 1. INNER JOIN - 두 테이블 간에 양쪽 모두 존재하는 데이터만 도출한다. KEY를 통하여 연결함 2. OUTER JOIN 2-1) LEFT OUTER JOIN - 왼쪽의 테이블 기준으로 결합하며 오른쪽의 데이터가 없는경우 오른쪽 테이블은 null로 값이 결합..