프로그래머스
[백준 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보다 더 크다고 할 수..
[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 ..
[백준 2563번] 색종이 - 파이썬
백준 2d array 부분 색종이 알고리즘에 대해 풀어보겠습니다. (https://www.acmicpc.net/problem/2563) 처음 이 문제를 접했을 때 들었던 생각은 각 색종이 area를 구하여 더함 교집합 영역을 구함 하나의 교집합 영역만 전체 area에 남겨두고, 나머지는 뺌 그런데 이렇게 처리하면 예외 케이스가 많이 생겨 너무 복잡도가 증가한다는 단점이 있었습니다. 단순하게 생각해보면, A라는 100 x 100 매트릭스가 있다고 가정했을때, 겹치든 겹치지지 않든, 색종이가 영역을 덮고 있다면 A[i][j] 의 값을 1로 설정하고 그렇지 않다면 0으로 설정하면 불필요한 예외 처리 없이 문제를 해결 할 수 있습니다. 정답 코드는 다음과 같습니다. if __name__ == '__main__..
[백준 10798번] 세로 읽기 파이썬
백준 단계별로 문제를 풀기 시작하다보면, 2d-array에 관한 문제가 나옵니다. 단계별로 올라갈수록 맛보기 수준의 문제에서 난이도가 올라가는 것을 체감할 수 있습니다. 오늘은 10798번 문제에 대해 어떻게 풀었는지 공유해보겠습니다. (https://www.acmicpc.net/problem/10798) 다음 문제에서 챌린지는 matrix를 가로방향이 아닌 세로방향으로 읽어야함 각 행(단어)별로 0~15까지 가변 길이를 갖고 있음 문제는 두번째 포인트인데, 어떻게 예외를 처리할까 고민하게 될 수 있습니다. 답은 생각보다 간단합니다. if __name__ == '__main__': words = [input() for i in range(5)] for j in range(15): for i in rang..