전체 글 139

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

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

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

개발/알고리즘 2024.04.22