개발 103

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

■ 해결 방법 처음에는 점끼리 겹치는 선분의 길이를 더해서 구하려고 했으나, 세개의 선분이 동시에 겹칠 때를 계산하기 위해서 너무 복잡해졌다. 알고리즘은 더 효율적인 방법으로 모색해야 하므로 다른 방법을 고민해보았다. 색칠로 비유해보자면 일직선에 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

프로그래머스SQL_조건에 부합하는 중고거래 댓글 조회하기

■ 사용 문법 INNER JOIN(ON 조건) ■ 사용 방법 내부조인을 이용해 문제를 해결하였다. ON 절을 이용해 기본키와 외래키로 사용된 칼럼을 설정한다. ■ 코드 -- 코드를 입력하세요 SELECT TITLE, BOARD.BOARD_ID, REPLY_ID, REPLY.WRITER_ID, REPLY.CONTENTS, DATE_FORMAT(REPLY.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE FROM USED_GOODS_BOARD AS BOARD INNER JOIN USED_GOODS_REPLY AS REPLY ON BOARD.BOARD_ID = REPLY.BOARD_ID WHERE BOARD.CREATED_DATE BETWEEN date ('2022-10-01') AN..

개발/SQL 2024.04.19

프로그래머스SQL_오프라인/온라인 판매 데이터 통합하기

■ 사용 문법 UNION, NULL AS 칼럼 A ■ 사용 방법 두 개의 테이블을 열로 합치는 문제이다. 순간 join을 생각했지만 중복된 칼럼이 있는게 아니라 테이블의 값이 개별적으로 존재 할 것 같아서 열로 합치는 UNION을 생각했다. UNION은 칼럼이 똑같아야 합칠 수 있다. 그래서 offline에는 존재하지 않는 USER_ID를 NULL 값으로 채워줘서 만들어줘야 한다. 이 때 NULL AS USER_ID를 사용한다. ■ 코드 (SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE, PRODUCT_ID,USER_ID, SALES_AMOUNT FROM ONLINE_SALE WHERE SALES_DATE BETWEEN date('2022.03.01')..

개발/SQL 2024.04.18

프로그래머스SQL_ 12세 이하인 여자 환자 목록 출력하기

■ 사용 문법 IFNULL(A, B) ■ 사용 방법 TLNO의 칼럼에 있는 값들 중에 공백을 NONE으로 바꾸어준다. 그리고 처음에 계속 틀렸는데, 문제를 자세히 보니 여자환자였다. 문제를 속에 답이 있다는 것을 또 한 번 느꼈다. ■ 코드 -- 코드를 입력하세요 SELECT PT_NAME, PT_NO,GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO FROM PATIENT WHERE AGE

개발/SQL 2024.04.18

프로그래머스SQL_ 조건에 맞는 도서 리스트 출력하기

■ 사용 문법 BETWEEN, YEAR, DATE_FORMAT ■ 사용 방법 기존에는 2021년 첫 날과 2021년 마지막 날 사이에 있는 값을 구하기 위해 BETWEEN을 사용했다. 하지만 다른 방법을 찾아보니 YEAR을 사용하는 방법이 있어 해당 방법을 사용하여 코드를 개선하였다. ■ 코드 * 기존 -- 코드를 입력하세요 SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE,'%Y-%m-%d') AS PUBLISHED_DATE FROM BOOK WHERE PUBLISHED_DATE BETWEEN date('2021-01-01') and date('2021-12-31') AND CATEGORY = '인문' ORDER BY PUBLISHED_DATE ASC * 개선 -- 코드를 입..

개발/SQL 2024.04.17