Problem Solving/프로그래머스

Problem Solving/프로그래머스

[프로그래머스] 기둥과 보 설치(python) - 2020 카카오 신입 공채

문제 바로가기(프로그래머스) 아이디어 : 구현(시뮬레이션), 전체탐색 전형적인 시뮬레이션 문제로, 문제에서 제시한 구체적인 처리과정을 차례대로 코드화하면 된다. 문제를 제대로 이해하는 데 꽤 오랜 시간이 걸렸다. (카카오 코테의 대표적인 특징이랄까) 문제에서 제시해준대로 기둥과 보의 존재 요건을 그대로 적용한다. 설치할 때의 조건 만족 여부는 명확한 확인이 가능하지만, 삭제할 때의 조건 만족 여부는 주변의 여러 기둥, 보를 모두 확인해봐야 하므로 굉장히 까다롭다. 따라서 삭제를 요구할 때마다 일일이 전체 구조물을 확인하는 전체탐색 방법을 사용할 수 있다. 시간복잡도가 문제일 수 있지만, 문제에서 제한한 전체 명령의 개수는 최대 1,000개 이다. O(M^2)으로 하는 것이 가장 이상적일텐데, 이 문제의 ..

Problem Solving/프로그래머스

[프로그래머스] 자물쇠와 열쇠(python) - 2020 카카오 신입 공채

문제 바로가기(프로그래머스) 아이디어 : 구현(완전탐색), 2차원 리스트 회전 배열을 회전, 이동시켜야 한다는 부분에서 턱 막힌 문제였다. 회전 관련 부분은 따로 다뤘었고, 이동 문제는 배열을 직접 이동시킬 게 아니라, 기본 Lock 배열판을 크게 만들면 되는 거였다. 문제에서 제시한 자물쇠와 열쇠의 크기는 최대 20 x 20 이므로 완전 탐색을 이용해서 열쇠를 이동이나 회전시켜서 자물쇠에 끼워보는 작업을 전부 시도해봐도 무리가 없다. (400 * 400 = 16만, 일반적인 채점 환경에서는 1초에 2000만 ~ 1억 정도의 연산 처리 가능) 즉, 완전 탐색 아이디어를 사용하면 된다. 그리고 완전탐색을 수월하게 하고자 자물쇠 리스트의 크기를 3배 이상으로 변경하면 계산이 수월해진다. 그리고 그 중앙에 실..

Problem Solving/프로그래머스

[SQL] Summer/Winter Coding(2019) 우유와 요거트가 담긴 장바구니

SELECT DISTINCT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Milk' and CART_ID IN (Select C.CART_ID FROM CART_PRODUCTS as C WHERE NAME = 'Yogurt') ORDER BY CART_ID; A와 B를 동시에 구입한 장바구니가 있는지 알아보는, 대표적인 연관분석 문제였다. SQL에서 연관분석을 해보리란 생각은 안 해봤는데 (맨날 R에서만 해봤음) 생각보다 간단하게 중첩쿼리문으로 해결했다. SELECT P.CART_ID FROM CART_PRODUCTS as P, CART_PRODUCTS as C WHERE P.CART_ID = C.CART_ID and P.name = 'Milk' and C.name = 'Yo..

Problem Solving/프로그래머스

[SQL고득점Kit] 프로그래머스 JOIN, String, Date

📂 JOIN 1. 없어진 기록 찾기 - LEFT OUTER JOIN 천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록(ANIMAL_OUTS)은 있는데, 보호소에 들어온 기록(ANIMAL_INS)이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요. * Left Outer Join 을 사용해 ANIMAL_INS 테이블에 데이터가 없어서 join 되지 않는 레코드도 뽑아낼 수 있도록 함 SELECT O.ANIMAL_ID, O.NAME FROM ANIMAL_OUTS AS O LEFT OUTER JOIN ANIMAL_INS AS I ON I.ANIMAL_ID = O.ANIMAL_ID WHERE I.ANIMAL_ID IS NULL ORDER BY O.ANIMAL_ID; 2. 있..

Problem Solving/프로그래머스

[SQL고득점Kit] 프로그래머스 GROUP BY, IS NULL

📂 GROUP BY group by는 having이랑 짝꿍이다. group by ( attribute ) 로 원하는 attribute 값들끼리 그룹화된다. 각 그룹 내에서 조건문으로 필터링을 하고 싶다면 having을 사용하는 방식이다. 1. 고양이와 개는 몇 마리 있을까 - COUNT, GROUP BY 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요. SELECT ANIMAL_TYPE, COUNT(*) as count FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE ASC; 2. 동명 동물 수 찾기 - GROUP BY & HAVING 동물 보호소에 들어온 동물 ..

Problem Solving/프로그래머스

[SQL고득점Kit] 프로그래머스 SUM, MAX, MIN문

1. 최댓값 구하기 - MAX 가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요. 두 가지 방법으로 작성했다. MAX를 사용하면 날짜 중에 가장 큰 값(최근 값)을 출력한다. 또는 DATETIME을 내림차순하여 그 중 첫번째것만 LIMIT 1 을 걸어 출력할 수 있다. #1 SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1; #2 SELECT MAX(DATETIME) FROM ANIMAL_INS; 2. 최솟값 구하기 - MIN 동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요. SELECT MIN(DATETIME) FROM ANIMAL_INS; 3. 동물 수 구하기 - COUN..

Problem Solving/프로그래머스

[SQL고득점Kit] 프로그래머스 SELECT문

/* 모두 MySQL 방식으로 작성함 */ 1. 모든 레코드 조회하기 동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID; 2. 역순 정렬하기 동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC; 3. 아픈 동물 찾기 동물 보호소에 들어온 동물 중 아픈 동물(sick)의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요. SELECT ANIMA..

blackon29
'Problem Solving/프로그래머스' 카테고리의 글 목록