본문 바로가기

분류 전체보기222

SQL공부 feat. 프로그래머스 (5) (Level 3) JOIN에 대해 알아보자 RDB의 특징인 관계를 맺어주어 다른 테이블의 값을 가져올수있는 JOIN JOIN의 종류 출처: https://hongong.hanbit.co.kr/sql-기본-문법-joininner-outer-cross-self-join/ 위 출처를 대강 훑고 오면, 기초적인 JOIN은 INNER JOIN임을 알게 된다. INNER JOIN 기초적인 JOIN의 디폴트 방식이다. A, B 테이블의 교집합을 구한다. LEFT OUTER JOIN 차집합을 구할때 쓰인다. LEFT OUTER JOIN LEFT OUTER JOIN을 활용해 나는 가지고 있지만 다른 테이블엔 없는 애를 찾고 싶다. 아래가 그 코드 SELECT * FROM A a LEFT JOIN B b ON a.KEY = b.KEY WH.. 2023. 3. 21.
SQL공부 feat. 프로그래머스 (4) (CASE-WHEN-ELSE-END) CASE WHEN ELSE END 중성화 여부 파악하기 링크: https://school.programmers.co.kr/learn/challenges?order=acceptance_desc&statuses=unsolved&levels=1%2C2&languages=mysql -- 코드를 입력하세요 SELECT animal_id, NAME, ( CASE WHEN sex_upon_intake LIKE "neutered%" OR sex_upon_intake LIKE "spayed%" THEN "o" ELSE "x" END ) AS 중성화 FROM animal_ins ORDER BY animal_id; 조건에 부합하는 중고거래 상태 조회하기 링크: https://school.programmers.co.kr/le.. 2023. 3. 19.
SQL공부 feat. 프로그래머스 (3) (JOIN - ON, GROUP BY - HAVING) JOIN - ON -- 코드를 입력하세요 SELECT A.FLAVOR FROM FIRST_HALF AS A JOIN ICECREAM_INFO AS B ON A.FLAVOR = B.FLAVOR WHERE A.TOTAL_ORDER > 3000 AND B.INGREDIENT_TYPE = 'fruit_based' ORDER BY TOTAL_ORDER DESC 조건에 부합하는 중고거래 댓글 조회하기 SELECT B.TITLE, B.BOARD_ID, R.REPLY_ID, R.WRITER_ID, R.CONTENTS, DATE_FORMAT(R.CREATED_DATE, "%Y-%m-%d") AS CREATED_DATE FROM USED_GOODS_BOARD AS B JOIN USED_GOODS_REPLY AS R ON .. 2023. 3. 19.
[Express.js] 1주차 중간점검 [Express.js] 1주차 회고 Express.js 백엔드에 대해 제대로 아는것이 없는 상태에서 무작정 만들면서 배우기 시작한지 1주일차. 이번주엔 무엇을 배웠나..? 기본적인 CRUD… 이전에… 세팅부터 (PostgreSQL, RDS, Raw Query) CRUD 자체는 FE 하면서도 많이 해본것이라 큰 어려움은 없었다. 다만 강의, 공식문서와 환경이 똑같지 않아 환경설정 등에서 어려움을 겪었고, 예기치 못한 에러들을 많이 만나는 경험을 했다. 특히 connect-redis 를 버젼 다운하며 해결했던 문제는 정말… 지금 생각해도 황당하다. ㅎㅎ 제로초님 에선 Sequelize를 사용하는데, 개인적으론 Raw Query를 연습하면서 익숙해지고 싶다는 생각에 SQL문을 직접 사용하기로 했다. Postg.. 2023. 3. 12.
[Todo List Express] Post Method 이후 데이터 return 해주는 방법, PostgreSQL 대문자 문제 - 생성한 todo의 id를 모른다… exports.createTodo = async todo => { const values = [todo]; const query = ` INSERT INTO todos (todo, "isCompleted") VALUES($1, false) RETURNING id, todo, "isCompleted"; `; const { rows } = await client.query(query, values); return rows; }; createTodo를 INSERT문으로 했는데 id값을 받아서 다시 한번 todo를 찾아서 주려고 한다. 근데 …. 어떻게 함? 해결 - RETURNING id INSERT INTO todos (todo, "isCompleted") VALU.. 2023. 3. 4.
[Todo List Express] CORS ERROR, express.json(), express.urlencoded() 에러: 프론트에서 GET getTodos해도 데이터가 안옴… res.json({}) 하면 json으로 데이터 가는줄 알았는데, 이것도 미들웨어로 처리를 해줘야 json으로 보낼수있나보다. 강의에선 무지성 따라하다보니까 세세한 부분을 놓치는데 아마 이게 그 encoded: false였나 그거였나?? 찾아봐야겠다. 아래 두 라인 넣어보았는데 안된다. 뭐지 이거 프론트단 문젠가… 프론트단은 이미 다른 백엔드 API사용해서 구현되어 있는거 쓰는거라 최대한 손 안댈려고했는데… 확인해야겠따… 😭 app.use(express.json()); app.use(express.urlencoded({ extended: false })); 아…. 확인해보니까 CORS 때문이었다… express에 cors 간단하게 해결하는 문서.. 2023. 3. 4.
[Python] (프로그래머스 Level 3) 이중우선순위큐 [Python] (프로그래머스 Level 3) 이중우선순위큐 내 풀이 from heapq import heapify, heappush, heappop, nlargest def solution(operations): heap = [] heapify(heap) for operation in operations: [char, value] = operation.split(' ') if char == 'I': heappush(heap, int(value)) else: if len(heap) > 0: if value == '1': heap = nlargest(len(heap), heap)[1:] heapify(heap) else: heappop(heap) if heap: .. 2023. 2. 12.
[Python] (프로그래머스 Level 2) 더 맵게 [Python] (프로그래머스 Level 2) 더 맵게 내 풀이 import heapq def solution(scoville, K): heap = scoville heapq.heapify(scoville) count = 0 while True: min_val = heapq.heappop(heap) if min_val >= K: return count if len(heap) < 1: return -1 min_val2 = heapq.heappop(heap) heapq.heappush(heap, min_val + min_val2 *2) count += 1 return count JS로 공부할 때 Heap 구현은 해보았지만… 사용해서 문제를 풀어볼 엄두는 안나던데, python으로 하니 간단하게 import .. 2023. 2. 12.
M사 코테 후기, 기록 (23.02.12) 코테 후기 m사 코테를 봤다. 구현 문제 3개가 나왔는데, 난이도는 그렇게 어렵지 않았다. 프로그래머스로 따지면 Level 1, 3개라고 보면될듯. 3시간 20분이 주어졌는데, 1시간30분 정도에 끝낸것 같다. 사실 제출하면 끝인줄 모르고 프로그래머스처럼 테케 더 보고싶어서 제출누르자마자 더이상 변경이 불가해서 당황스럽더라… 아쉽게도 처음으로 푼 문제는 0점을 맞았다… 다른 문제들에 비해 좀 더 경솔하게 제출을 눌러서 그런것 같다. Codility에서 쳐서 점수를 바로 알려줬는데 결과는 생각보다 못나왔다… 구현 3문제인걸 보니 스타트업은 확실히 어려운 알고리즘을 원하기보단 실제로 구현하고 일할 수 있는 사람인지 확인하는 것 같다. (일정 내에 구현을 마무리 할 수 있는 기본적인 코딩을 할 줄 아는지) 앞.. 2023. 2. 12.
SQL문 연습 with 프로그래머스 (2) (MySQL) SUM(), AVG(), ROUND(), TRUNCATE() SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE = &#39;SUV&#39; AVG() : 평균 SUM() : 합 ROUND( , ) : 반올림 TRUNCATE() : 내림 DATEDIFF() DATEDIFF(날짜1, 날짜2) : 날짜1 - 날짜2 SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, &#39;%Y-%m-%d&#39;) AS START_DATE, DATE_FORMAT(END_DATE, &#39;%Y-%m-%d&#39;) AS END_DATE, IF(DATEDIFF(END_DATE, .. 2023. 2. 11.