본문 바로가기

전체 글

Number of Islands (DFS) 예전에 LeetCode에서 Queue를 공부할 때 Number of Islands라는 문제를 푼 적이 있다. 2020/07/21 - [알고리즘/LeetCode] - Number of Islands using BFS Number of Islands using BFS 제목만 보면 거창해 보이지만 옛날 포스팅과 마찬가지로 게으름뱅이가 자신의 안타까운 코딩 능력을 체감하고 반성하는 의미에서 적는 글이다. 여기서 다루는 문제는 LeetCode의 Explore 탭에서 제 haruhiism.tistory.com 그때는 문제에서도 Queue 자료구조를 활용한 BFS를 요구했기 때문에 이를 활용했지만 최근 다시 공부하면서 풀이를 되새겨보니 꼭 이를 사용하지 않아도 문제를 풀 수 있을 것 같아 풀이를 조금 바꿔보았다. c.. 더보기
Java를 이용한 Circular Queue 구현 이 포스트는 LeetCode에서 Queue, Stack 튜토리얼을 읽으면서 배운 내용을 기록하고 있다. Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com Queue Queue, 큐는 대표적인 FIFO 자료구조로 Stack과 더불어 유명한 선형 자료구조다. FIFO는 말 그대로 First-In-First-Out으로 먼저 자료구조에 삽입된 데이터가 먼저 자료.. 더보기
프로그래머스 SQL 고득점 Kit - GROUP BY 프로그래머스에서 SQL 고득점 Kit을 풀고 추가적으로 조사하여 얻은 지식을 정리하는 문서다. 문제를 풀 때는 익숙한 MySQL을 활용하였다. GROUP BY 이전 포스트에서도 몇 번 설명했었지만 GROUP BY는 레코드들을 특정 칼럼 값들을 기준으로 묶는 명령어다. 그래서 그룹화한 후 집계 함수를 사용하는 방식으로 많이 사용되는데 COUNT() 함수를 사용하여 해당 그룹에 몇 명이 있는지 출력하는 쿼리를 작성해보면 다음과 같다. MariaDB [vulnerable_db]> SELECT COMPANY, COUNT(NAME) FROM USER_TABLE GROUP BY COMPANY; +-----------------------------+-------------+ | COMPANY | COUNT(NAME.. 더보기
WITH (Common Table Expressions) 이 MySQL 문서와 이 튜토리얼을 읽고 얻은 지식을 정리하는 포스트다. WITH WITH란 키워드 자체는 들어본 적도, 써본 적도 없기 때문에 프로그래머스에서 SQL Kit 문제를 풀다가 처음 만났을 때 당혹스러웠다. 항상 모든 쿼리는 한 줄로 SELECT로 시작해서 조건으로 끝난다고 막연히 생각하고 있었는데 실제로는 더 복잡한 쿼리를 사용할 수도 있겠다는 느낌을 받았다. WITH 명령어의 목적은 해당 쿼리가 실행되기 전에 쿼리에서 참조할 수 있는 임시 테이블을 만드는 것이다. 이 임시 테이블 역시 특정 쿼리(서브 쿼리)의 결과로 생성되어야 하는데 적절하진 않지만 기존의 테이블을 활용하여 예시를 보이면 다음과 같다. MariaDB [vulnerable_db]> WITH MY_COMPANY AS (SEL.. 더보기
프로그래머스 SQL 고득점 Kit - SUM, MAX, MIN 프로그래머스에서 SQL 고득점 Kit을 풀고 추가적으로 조사하여 얻은 지식을 정리하는 문서다. 문제를 풀 때는 익숙한 MySQL을 활용하였다. 집계 함수 이번 Kit에서 다루는 함수들은 집계 함수들로 테이블의 여러 행에서 하나의 결괏값을 반환하는 함수들이다. 함수 이름에서 볼 수 있듯이 합계(SUM), 최댓값(MAX), 최솟값(MIN) 등을 구하려면 당연히 여러 행을 활용해야 할 것이며 이들의 결괏값은 당연히 하나만 반환된다. 레코드를 특정 칼럼 값에 따라 그룹화하는 GROUP BY 명령어와 함께 사용된다면 더욱 효과적이다. 알아둘 것은 집계 함수는 SELECT된 레코드들에 대해서 수행하는 것이기 때문에 WHERE 절에서 사용할 수 없다. 예를 들어 다음처럼 점수가 최고 점수인 레코드만 출력하는 쿼리를 .. 더보기
프로그래머스 SQL 고득점 Kit - SELECT 프로그래머스에서 SQL 고득점 Kit을 풀고 추가적으로 조사하여 얻은 지식을 정리하는 문서다. 문제를 풀 때는 익숙한 MySQL을 활용하였다. SELECT 기본적으로 SELECT는 레코드를 조회하는 명령어기 때문에 특정 조건(또는 모든)의 칼럼 값이나 문자열뿐 아니라 함수 실행의 결괏값을 얻어올 수 있다. 대표적인 예로 현재 시간을 반환하는 NOW() 함수를 SELECT 하면 다음과 같은 결과를 얻을 수 있다. MariaDB [(none)]> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2021-02-01 23:27:53 | +---------------------+ 1 row in set (0.000 sec) 보통 .. 더보기
2021.01.31 Sun - 자바스크립트 스터디, 카카오커머스 테스트 지난 포스트에서 언급했듯이 요즘은 NEXTSTEP에서 진행하는 블랙커피 스터디 레벨1 6기를 듣고 있다. 만원쯤 내고 여러명이 모여서 멘토로부터 간단한 안내와 API를 받아서 프론트엔드 개발 과제를 수행하는 형식인데 서로 코드리뷰를 하는게 굉장히 유익해서 듣길 잘했다고 생각하고 있다. 웹 개발로 방향을 틀게 되면서 자바스크립트는 프론트엔드던 백엔드던 필요한 언어라고 들었기 때문에 지금은 두 분야 공통 과목인 자바스크립트를 공부하는데 열중하고 있다. 최근에는 프로그래머스에서 진행하는 카카오커머스 프론트엔드 모집에 참여해서 코딩테스트 통과 및 과제 테스트를 수행하고 결과를 기다리는 중이다. 이 과제 테스트를 통과해야 두 번의 면접을 치를 자격이 주어지기 때문에 일단 지금은 과제 테스트 결과를 기다리고 있다... 더보기
Lord of SQLInjection - dragon 20번째 문제인 dragon이다. http://www.wechall.net 더보기