전체 글
[백준 19532] 수학은 비대면 강의입니다 / Cramer's Rule / 브루트 포스
이번에는 백준 브루트 포스 문제 중 연립방정식을 풀어야 하는 '수학은 비대면강의입니다'를 풀어보자. 이 문제는 크게 두 가지 방법으로 풀 수 있다. 브루트 포스 (for문 반복문 활용) Cramer 공식 (수학 지식 필요) 1번은 모든 시도를 다 해보는 것이기 때문에 우리가 쉽게 생각할 수 있는 부분이라고 생각이 들고 2번은 수없이 많은 수학 문제를 풀면서 얻은 내공 또는 선형대수학을 공부하던 시절을 기억해야 하기에 비전공자라면 쉽게 떠오르지 않을 수 있다. 하지만 2번이 더 효과적이라는 것!! 그렇지만 브루트 포스 관점에서 1번이 오히려 백준이 요구하는 정답에 가깝지 않나 생각이 든다. 방법 1: 브루트 포스 브루트 포스는 생각보다 간단하다. 모든 값은 -999와 999사이의 정수 값으로 할당이 되고,..
[SQL] 프로그래머스 특정 물고기를 잡은 총 수 구하기 - 조인 & 상관중첩질의
프로그래머스 Lv1 다음 문제를 풀어보자. FISH_INFO와 그리고 FISH_NAME_INFO 두 개의 테이블이 존재하고, join을 활용하면 쉽게 풀리는 문제이다. 하지만 단순하게 하나의 SQL 방법에 의존하게 되면, 향후 복잡한 쿼리를 사용할 때 제한적인 생각에 갇힐 수도 있다. 따라서 상관 중첩 질의를 이용해서도 풀이를 작성해놨다. (상관 중첩 질의 내용 포스팅은 여기로) Join 문을 이용한 코드 SELECT count(*) AS FISH_COUNT FROM fish_info as f INNER JOIN fish_name_info as n ON f.fish_type = n.fish_type WHERE n.fish_name in ('BASS', 'SNAPPER') ; 위 코드는 단순하게 전체 결과..
[백준 24313] 점근적 표기 1 문제 풀이 & 해설 - 파이썬
백준 24313 문제에 대해 풀어보겠습니다. 이 문제는 알고리즘 수행 시간에 관한 문제로 "점근적 표기 (asymptotic notation)"에 관해 알고 있는지를 묻고 있습니다. Background: 점근적 표기 점근적 표기에 대해 간략히 설명을 하자면, Big-O를 계산할 때 입력값의 크기에 따라 함수가 얼마나 빨리 커지는지 알아볼 때 중요하지 않은 항과 상수 계수를 제거하면서 이해를 방해하는 불필요한 부분을 없앤 표기법이라고 볼 수 있습니다. 즉, 간략한 예로 $ y = 0.0006n^3 - 1000 $라고 했을 때, $O(y)=n^3$ 가 되는 반면에, $ x = 1000n^2 + 1000 $의 Big O는 $O(x)=n^2$ 가 되기 마련입니다. 따라서 y의 수행시간이 x보다 더 크다고 할 수..
[python] 등차수열과 등차수열의 합
알고리즘 및 코딩 테스트를 진행하다보면, 이따금 수학적 공식을 알고 있다면 생각보다 쉽게 풀리는 문제들이 있습니다. 수많은 공식들을 모두 외울 수도 없지만, 기본적인 내용은 짚고 넘어가면 도움이 될 수 있습니다. 그 중에서도 오늘은 등차수열에 관해 다뤄보려고 합니다. 등차수열의 기본 공식: n 번째 항 구하기 등차수열에서 n번째 항을 구하는 공식은 다음과 같습니다. $$ a_n = a_1 + (n-1)d $$ 여기서 각 기호는 다음을 의미합니다. $a_n$: $n$번째 항 $a_1$: 첫번째 항 $d$: 공차 $n$: 항의 순서 이 공식은 등차수열의 어느 항이든지 첫 번째 항과 그 항의 순서를 통해 계산할 수 있게 해줍니다. 등차수열의 기본 공식은 주로 수열의 특정 항을 찾을 때 사용되는데, 간단..
[SQL] 중첩 질의 - 상관 중첩 질의와 존재 연산자 EXISTS (3)
상관 중첩 질의 (Correlated Nested Query) 중첩 질의에서 하위 질의의 WHERE 절에 있는 레코드 검색 조건에 주질의에서 선언된 테이블의 컬럼을 참조하는 경우 상관 중첩 질의라고 함! 아래 예제를 통해 이해해보겠습니다. 사원 테이블: EMPLOYEE(Fname, Minit, Lname, SSN, Bdate, Address, Sex, Salary, Super_ssn, Dno) 부양 가족 테이블: DEPENDENT(Essn, Dependent_name, Sex, Bdate, Relationship) 아래 쿼리는 부양 가족 (dependent)과 성별이 같은 근로자의 ssn을 조회하는 쿼리입니다. 단일 질의는 join문을 활용하여 조회했습니다. -- 단일 질의 SELECT ssn FROM ..
[SQL] 검색 - 목록 검색 연산자와 중첩 질의 Nested Query (2)
SQL에서 목록 검색 연산자라고 하면 IN과 NOT IN이 있다. IN 연산자는 일반적으로 주 질의의 WHERE 절에서 하나의 컬럼 값이 하위 질의가 반환한 결과 목록에 포함되는지 확인을 하는 역할을 한다. 지난 첫번째 중첩질의 포스팅에서도 다뤘지만, 하위 질의는 테이블(뷰) 형태를 반환할 수 있기 때문에 두개 이상의 값을 취할 수 있다. 주 질의는 WHERE 절의 컬럼 값이 하위 질의의 결과 목록에 포함되면 True를 반환한다고 이해하면 된다. 예시를 들어보자. 다음과 같은 3개의 테이블(emplyee, department, dependent) 이 존재한다고 가정해보자. 예제 1) 관리자인 사원의 정보를 검색 중첩질의를 활용해 이 문제를 해결해보자면 다음과 같이 SQL을 만들어서 원하는 답을 구할 수..
[SQL] 검색 - 비교 연산자와 중첩 질의 Nested Query (1)
어느 정도 데이터베이스 입문을 끝냈을 때 (ER 모델, RDB와 논리적 설계, 관계대수와 관계해석 파트까지), 드디어 실무에서 가장 많이 쓰일 수 있다고 생각되는 SQL 내용이 등장하기 시작한다. 많은 SQL 영역 중에서도 검색 분야의 중첩 질의에 대해 다뤄보고자 한다. 중첩 질의 중첩 질의는 다음과 같은 의미로 사용된다. SELECT문 (주 질의)의 WHERE 절 내에 새로운 SELECT문 (하위 질의)를 포함하는 질의 하위 질의는 주 질의의 WHERE절에서 레코드 검색 조건과 함께 사용된다. 간단하게 예를 살펴보자 예) 'Research' 부서의 사원 수 검색 이때 부서의 사원수를 검색하기 위해서 where 절에 하위 질의로 또다른 SELECT문이 등장하여 조건을 충족시켰다. 물론 join으로도 ..
[SQL] 조건에 부합하는 중고거래 댓글 조회 (프로그래머스)
프로그래머스 SQL LV1 문제중 가장 질문 게시판이 핫한 문제중 하나를 들고 와봤다. 이 문제는 두 테이블 (게시판 & 댓글)을 활용하여 쿼리를 작성하는 전형적인 join 과 관련된 문제이다. 이 문제는 DATE 형태만 제대로 작성하면 문제없이 원하는 결과물을 만들 수 있다. 올바른 DATE 포맷 사용하기 -> DATE_FORMAT() 함수 활용 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 b INNER JOIN USED_GOODS_REPLY r ON b.BOARD_ID = r.BOARD_ID ..