개발 103

프로그래머스_개인정보 수집 유효기간

■ 해결 방법문자열을 잘 가지고 놀아야 하는 문제이다.  계산된 개인정보 약관과 현재 날짜를 비교를 하면 되는데, 구조화를 잘 해놓기만 하면 쉽게 풀 수 있다. ■ 코드 function solution(today, terms, privacies) { var answer = []; let map = new Map(); for(key in terms){ map.set(terms[key].substr(0, 1),Number(terms[key].split(' ')[1])) } for(key in privacies){ let year = Number(privacies[key].substr(0,4)) let month = Number(privacies..

개발/알고리즘 2024.05.02

프로그래머스SQL_대장균들의 자식의 수 구하기

■ 사용 문법 LEFT JOIN, IFNULL, GROUP BY ■ 사용 방법1. ECOLI_DATA 테이블을 GROUP BY를 해줘 PARENT_ID의 갯수를 구해준다.2. 이렇게 만들어진 테이블을 ECOLI_DATA와 LEFT JOIN을 해준다. LEFT JOIN을 해주는 이유는 모든 ID에 대한 자식의 수를 구해줘 하므로 갯수가 0인 것도 나와야 한다. 기존에 있는 INNER JOIN으로 할 경우 교집합만 출력이 되므로 모든 ID가 있는 ECOLI_DATA의 값이 다 나올 수 있도록 LEFT JOIN을 해준다. 3. 갯수가 NULL 인것은 IFNULL을 통해 0으로 널처리를 해준다.  ■ 코드-- 코드를 작성해주세요SELECT ID, IFNULL(CNT, 0) AS CHILD_COUNTFROM EC..

개발/SQL 2024.05.02

프로그래머스_[PCCP 기출문제] 1번 / 붕대 감기

■ 해결 방법health 감소에 영향을 주는 상황은 attacks이 있을 때 발생한다. 그러므로 health가 감소하는 상황을 이용해 health를 구한다. 최대 체력이 정해져 있기 때문에, 체력 감소 + 붕대로 체력 회복 패턴을 반복한다. 연속 성공 했을 때, 추가 회복량을 주는 것만 중간에 조건을 끼워서 계산하면 비교적 쉽게 해결할 수 있다.  ■ 코드 function solution(bandage, health, attacks) { var answer = 0; let max_health = health; health = health - attacks[0][1]; for(let i = 1; i = bandage[1]) extraPoint = Math.floor(duration /..

개발/알고리즘 2024.05.01

프로그래머스SQL_서울에 위치한 식당 목록 출력하기

프로그래머스SQL_조건에 맞는 ■ 사용 문법 GROUP BY, JOIN, LIKE, ROUND ■ 사용 방법먼저 조인을 하여 REVIEW_SCORE을 볼 수 있도록 하나의 테이블로 만든다. 이후 REST_ID로 GROUP을 지어 평균 점수를 SELECT 해준다. 그리고 문제에 '서울' 이라고 되어 있기 때문에, 문자열에 서울이 포함된 것으로 하되 서울시가 주소이므로 '%서울%' 대시 '서울%'을 이용해 문자열을 찾는다.  ■ 코드-- 코드를 입력하세요SELECT A.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(B.REVIEW_SCORE), 2) AS SCOREFROM REST_INFO AS AJOIN REST_REVIEW AS B ON A...

개발/SQL 2024.04.30

프로그래머스SQL_조건에 맞는 개발자 찾기

■ 사용 문법 비트 연산, 서브 쿼리 ■ 사용 방법서브쿼리를 통하여 Python과 C#의 코드를 구해주고, 해당 값을 비트 연산으로 만들어주었다. 즉, Python 이 10000000 이고 C#이 10000000000 OR 연산을 하면 10010000000이다. 이 값으로 SKILL_CODE에 AND 연산을 해주면 0이외의 값을 가지는 것이 둘 중 한가지 값을 포함한다고 보면된다.  ■ 코드SELECT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPERSWHERE (SKILL_CODE & ( SELECT BIT_OR(CODE) FROM SKILLCODES WHERE NAME IN ('Python', 'C#'))) != 0ORDER BY ID;

개발/SQL 2024.04.27

프로그래머스SQL_업그레이드 된 아이템 구하기

■ 사용 문법 서브쿼리  ■ 사용 방법2개의 서브쿼리를 이용하였다. 우선 RARE 타입의 ITEM을 SELECT 해주었고, SELECT된 ITEM들의 정보를 찾기 위해 ITEM_ID를 조건으로 SELECT 해주었다.  ■ 코드SELECT ITEM_ID, ITEM_NAME, RARITYFROM ITEM_INFOWHERE ITEM_ID IN ( SELECT A.ITEM_ID FROM ITEM_TREE AS A WHERE PARENT_ITEM_ID IN ( SELECT ITEM_ID FROM ITEM_INFO AS C WHERE RARITY = 'RARE'))ORDER BY ITEM_ID DESC 또 다른 방법으로 찾은 결과를 이용해 2개의 테이블을 조인..

개발/SQL 2024.04.26

프로그래머스SQL_자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

■ 사용 문법 GROUP BY, REGEXP  ■ 사용 방법OPTIONS에 복수개의 조건들이 있다. 문자열에 특정 문자를 포함여부를 확인하려면 여러가지 방법이 있는데 나는 REGEXP를 사용하였다. 사용시 |로 복수개 조건 설정이 가능하다. LIKE를 사용할 수 있지만 그럴 경우 코드의 비효율이 발생한다. (  ex. OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%'  ) ■ 코드SELECT CAR_TYPE, COUNT(*) AS CARSFROM CAR_RENTAL_COMPANY_CARWHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'GROUP BY CAR_TYPEORDER BY CAR_TYPE ASC

개발/SQL 2024.04.25