본문 바로가기

전체 글

(188)
[Python] 그리디- 4796. 캠핑(브1) https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net
[MYSQL] 1907. Count Salary Categories/ Union으로 원하는 행 추가하기 >> 문제 salary 수준에 따른 구분 Low Salary : Average Salary에 해당되는 값이 없어도 0으로 출력됨 처음엔 조건을 잘못이해해서 굉장히 쉽다고 생각함 응? 이게 미디엄이라고? 이건 웰던 아닌가? 너무 잘 익혀줬는데?? => 그러나, 여러 복병들이 드러남 먼저 income수준에 따라 각 category를 구분하고 category를 기준으로 그룹화하여 count값을 출력해주었다. 그런데 그렇게 하면 Average Salary가 출력이 안됨 => 행 내에 average salary가 없기 때문 즉, 억지로 3가지 category열을 만들고 이 category와 조인해야 함. 억지로 만든 카테고리 열 >>결과 이제 category를 기준으로 join해주자
[MYSQL] 1280. Students and Examinations / 카티션 곱(행렬 곱)/복합키 조인 꽤 머리를 앓았던 문제. 시작해보자 >>문제 : 테이블이 세개이다. 1) [Student]테이블 : 학생번호 + 학생이름 2) [Subject]테이블 : 학교에서 진행하는 모든 과목 3) [Examination]테이블 : 학생이름 + 시험친 과목 >>문제설명 각 학생이 각 과목에 응시한 시험의 횟수를 구하시오 (만약 시험에 응시하지 않았다면 0 출력) >>예시 students subjects examination >>예시 출력결과 어려웠던 점 : 응시하지 않은 시험은 0처리 (join 시 null이 되어야 하나?) 풀이과정 step1. 학생-과목별 응시횟수 구하기 여기서 group의 기준이 되는 값은 단순 학생 혹은 과목이 아닌 학생-과목이다. 따라서 학생-과목의 두 가지 기준으로 group by 를 해..
[MYSQL] 1321. Restaurant Growth/ lag 행을 통한 유동적인 누적합 >>문제 설명 테이블 : Customer customer_id : 소비자 식별번호 name : 소비자 이름 visited_on : 방문날짜 amount : 구매량 당신은 식당 관리자로써 앞으로의 각 날짜의 소비량을 예측하고자 한다. 예측 소비량은 : (오늘 소비량 + 이전 6일간의 소비량 누적합) /7로 계산한다. (이동평균법) 단, 각 날짜에는 여러 손님이 방문할 수 있다. 예시) 1/7일 예측량 : 1/1~1/7일 소비량의 평균 => 122.86 1/8일 예측량 : 1/2~1/8일 소비량의 평균 => 120 1/9일 예측량 : 1/3~1/9일 소비량의 평균 => 120 1/10일 예측량 : 1/4~1/10일 소비량의 평균 => 142.86 step1.날짜별 소비량 구하기 +num행 생성 자세히 보면 ..
[MYSQL] 1204. Last Person to Fit in the Bus >> 문제 컬럼 정보 Person_id : 개인 식별 번호 person_name : 사람 이름 weight : 몸무게 turn : 버스에 탑승할 순서 조건 - 버스에는 turn순서별로 탑승함 - 버스 승차 제한 중량은 1000kg임 (중량 누적합이 1000kg이면 더 타면 사고남) 출력 - 마지막에 탄 운좋은 친구의 이름은? >>예시 => 누적합이 딱 1000이 되는 john Cena친구가 마지막 탑승자 문제풀기 1단계: 누적합 테이블 만들기 - turn으로 오름차순해줌 - 중량을 차례대로 더해나감 >> 출력값 : 본래 컬럼 + 누적 중량합 2단계: 1000까지만 컷하기 - 위의 테이블을 from 서브쿼리로 넣음 - where 조건절에 1000이하로 잡아줌 >> 출력값 : 위의 테이블에서 누적 중량이 1..
[SQLite] 폐쇄할 따릉이 정류소 찾기1 / join 키 값 불일치 설정 >> 문제 => 어려운 수학공식 구현으로 난이도를 높이는 문제는 좋지 않다고 생각 => 정답 코드 => 수학 공식 구현은 구글링 참고 => where 조건 절 : 거리가 300m이하 => 각 station_id 별로 300m이하인 정류소가 5개 이상 => 중요하고 기억하고 싶은 것 join 키값이 일치조건만 있는 것이 아니라, 불일치 조건을 쓸 수 있음 => left join station as s_near on s.station_id != s_near.station_id => SQLite는 != => MYSQL은
[MYSQL] 550. Game Play Analysis IV / WITH절 임시 테이블 Table : - 기본키 : player_id, event_date - 이 테이블은 플레이어들의 게임플레이 기록을 뜻함 - 각 행은 플레이어가 로그인한 기록이며 games_played는 게임을 플레이한 개수가 적혀져 있음(0일 수도) ex) >> 문제 => 로그인한 첫날로부터 최소 이틀 연속 접속한 이들의 비율을 구하시오 => 문제 해석 주의점 : 2틀 연속인 경우가 하루라도 있는 사람을 출력하는 것이 아님 : 로그인한 첫날로부터 2틀연속 접속한 사람을 출력하는 것 ex) player1 player2 1-7 1-7 1-8 1-9 6-25 1-10 => player1 : 첫 로그인(7)-8일 연속이므로 조건 만족 => player2 : 9-10일이 연속되나 첫 로그인 기록인 7일 다음이 아니므로 조건 불만..
[MYSQL] Interviews /차근차근 결합하기 >> 문제 Samantha interviews many candidates from different colleges using coding challenges and contests. Write a query to print the contest_id hacker_id name the sums of total_submissions total_accepted_submissions total_views total_unique_views for each contest sorted by contest_id. Exclude the contest from the result if all four sums are 0. Note: A specific contest can be used to screen candida..