전체 글 138

프로그래머스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

프로그래머스_겹치는 선분의 길이

■ 해결 방법 처음에는 점끼리 겹치는 선분의 길이를 더해서 구하려고 했으나, 세개의 선분이 동시에 겹칠 때를 계산하기 위해서 너무 복잡해졌다. 알고리즘은 더 효율적인 방법으로 모색해야 하므로 다른 방법을 고민해보았다. 색칠로 비유해보자면 일직선에 1 단위로 칸이 나누어져있고 해당 칸에 색칠을 해준다는 느낌으로 생각을 해보았다. 그러면 여러번 색칠 된 것이 답이 될 것이다. 길이가 200인 일차원 배열을 선언해주고 값을 0으로 채웠다. 이후 lines의 배열을 순회하며 일차원 배열의 값을 채워갔다. 예를 들어, lines[0]의 값이 [0, 1] 일 때, 일차원 배열 line의 값은 line[0] =1이 된다. 이런식으로 line 배열의 값을 채우고 마지막에 1보다 큰 값을 카운트 해주면 된다. ■ 코드 ..

개발/알고리즘 2024.04.22

프로그래머스_평행

■ 해결 방법 기울기를 구하는 공식을 이용해 점과 점의 기울기를 구해준다. 이 때, 점이 고정되어 있는 것이 아니라 어디에 있을 줄 모르므로 점이 올 수 있는 위치에 대한 경우의 수를 구한다. 이 때, 3C2 즉 3가지의 경우의 수가 있다. 이 3가지 위치에 점들의 기울기를 비교해주면 된다. ■ 코드 function func_lean(x1, y1, x2, y2){ var x; var y; if(x1 < x2) x = x2 - x1 else x = x1 - x2; if(y1 < y2) y = y2 - y1 else y = y1 - y2; return x / y; } function solution(dots) { var answer = 0; console.log(dots); if(func_lean(dots[..

개발/알고리즘 2024.04.19