새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기

전체 보기232

[백준] 1715 카드정렬하기 문제 풀이 과정 1) 문제 이해 및 접근 가장 작은 수들을 우선으로 더해주면 되므로 그리디로 접근했습니다. 연산한 수를 리스트에 다시 넣고 그 중 가장 작은 수를 다시 빼서 사용해야 하므로 최소 힙을 사용했습니다. 2) 알고리즘 그리디 알고리즘 최소 힙 3) 풀이 코드 사용 언어 - Python import sys import heapq sys.stdin = open('input.txt') N = int(sys.stdin.readline()) # 숫자 개수 heap = [] # 힙으로 사용할 리스트 answer = 0 # 정답 변수 for _ in range(N): # 숫자들을 모두 최소힙에 푸시 heapq.heappush(heap, int(sys.stdin.readline())) while len(he.. 2021. 12. 23.
[HackerRank] Weather Observation Station 15 문제 풀이 과정 1) 문제 이해 및 접근 위도 값 중 제일 큰 값의 경도를 구해야 하므로, 위도 크기 순서대로 정렬 후 상위 1개만 출력하는 방식으로 접근했습니다. 2) 풀이 코드 사용 언어 - MySQL SELECT ROUND(long_w, 4) -- 출력할 열 FROM station -- 테이블 WHERE lat_n < 137.2345 -- 위도의 조건 ORDER BY lat_n DESC -- 큰 위도부터 순서대로 정렬 LIMIT 1; -- 가장 큰 위도의 경도이므로, 상위 1개의 결과만 출력 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없습니다. 2) 새롭게 학습한 내용 특별히 없습니다. 문제 링크 - https://www.hackerrank.com/challenges/weather-observ.. 2021. 12. 22.
[백준] 10868 최솟값 문제 풀이 과정 1) 문제 이해 및 접근 여러번 구간에 따라 최솟값을 구해야하므로 세그먼트 트리로 접근하였습니다. 2) 알고리즘 세그먼트 트리 (Segment Tree) 3) 풀이 코드 사용 언어 - Python import sys from math import log2, ceil sys.stdin = open('input.txt') def initial_tree(node, left, right): # 현재 노드 / 범위 시작 / 범위 끝 if left >= right: # 리프 노드일때 segment_tree[node] = lst_num[left] # 현재 노드에 숫자 값 할당 return segment_tree[node] # 할당된 현재 노드의 값 반환 left_node = initial_tree(n.. 2021. 12. 22.
[HackerRank] Weather Observation Station 13 문제 풀이 과정 1) 문제 이해 및 접근 조건에 해당하는 행들의 위도의 합을 구하고, 소수점 자리를 4째자리까지만 표현해야하므로 sum 함수와 trunc 함수를 이용하는 방법으로 접근했습니다. 2) 풀이 코드 사용 언어 - Oracle SELECT TRUNC(SUM(lat_n), 4) -- 출력하는 열 (위도의 합을 구하고 소수점 4자리에서 자름) FROM station -- 테이블 WHERE lat_n > 38.7880 AND lat_n < 137.2345; -- 위도가 38.7880 보다 크고 137.2345 보다 작은 경우 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없습니다. 2) 새롭게 학습한 내용 특별히 없습니다. 문제 링크 - https://www.hackerrank.com/challen.. 2021. 12. 21.
[백준] 2357 최솟값과 최댓값 문제 풀이 과정 1) 문제 이해 및 접근 여러가지 경우의 범위를 여러번 조회를 하여야 하므로, 세그먼트 트리를 이용하여 접근했습니다. 이전에 학습한 숫자의 합을 저장하는것과 다르게 최솟값, 최댓값을 구해야했기에, 노드의 값으로 숫자가 아닌 리스트를 저장하는 형태로 접근했습니다. 2) 알고리즘 세그먼트 트리 (Segment Tree) 3) 풀이 코드 사용 언어 - Python import sys from math import ceil, log2 sys.stdin = open('input.txt') def initial_tree(node, start, end): # 세그먼트 트리 만들기, 현재 노드 번호 / 범위 시작 / 범위 끝 if start >= end: # 리프 노드에 도달했을때 segment_tre.. 2021. 12. 21.
[프로그래머스] 오랜 기간 보호한 동물(2) 문제 풀이 과정 1) 문제 이해 및 접근 두개 테이블의 각 열을 비교하여 연산이 필요하므로 조인으로 접근하였습니다. 마지막에 상위 2개의 값이 필요하여 조인한 결과를 서브쿼리로 이용했습니다. 2) 풀이 코드 사용 언어 - Oracle SELECT ANIMAL_ID, NAME -- 출력 열 FROM ( SELECT ai.* FROM ANIMAL_INS ai, ANIMAL_OUTS ao WHERE ai.ANIMAL_ID = ao.ANIMAL_ID ORDER BY (ao.DATETIME - ai.DATETIME) DESC ) -- 서브쿼리 (두개의 테이블 조인하여 보호기간이 긴 순서대로 출력) WHERE ROWNUM 2021. 12. 20.
[프로그래머스] 트리 트리오 중간값 문제 풀이 과정 1) 문제 이해 및 접근 세개의 노드를 선택하여야 하므로, 모듈을 이용해 조합의 경우의 수를 구하는 방식으로 접근했습니다. 또한 모든 점에 대해서 어떤 점을 향하는 거리의 값이 필요하여 다익스트라를 이용하는 방식으로 생각했습니다. 그러나 노드의 개수가 너무 많아, 너무 많은 다익스트라 함수를 실행하여 시간 초과가 발생하였습니다. 이 문제를 해결하기 위해 고민하던 중 트리의 지름에 관한 문제를 접하고, 활용하게 되었습니다. 세개의 노드의 길이 중 최댓값을 구하면 되었으므로 트리의 지름을 구하고 트리의 지름 -1 의 길이를 구하는 방식으로 접근하였습니다. 2) 알고리즘 다익스트라 3) 풀이 코드 사용 언어 - Python (1) 다익스트라, 조합 이용한 접근 - 시간 초과 import hea.. 2021. 12. 20.
[프로그래머스] 없어진 기록 찾기 문제 풀이 과정 1) 문제 이해 및 접근 보호소에 들어온 동물 ID 리스트를 서브쿼리로 만든 후 그 리스트 안에 입양간 동물의 ID 값이 없는 경우를 찾는 방식으로 접근했습니다. 2) 풀이 코드 사용 언어 - Oracle SELECT ANIMAL_ID, NAME-- 출력 열 FROM ANIMAL_OUTS WHERE ANIMAL_ID NOT IN (-- 보호소에 들어온 동물 ID 리스트 안에 입양된 동물 ID 번호가 없으면 SELECT ANIMAL_ID FROM ANIMAL_INS ) ORDER BY ANIMAL_ID;-- 정렬 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없었습니다. 2) 새롭게 학습한 내용 특별히 없었습니다. 문제 링크 - https://programmers.co.kr/learn/c.. 2021. 12. 19.
[백준] 2042 구간 합 구하기 문제 풀이 과정 1) 문제 이해 및 접근 초기에 구간합 문제로 누적합을 이용하여 접근을 시도했습니다. 누적합을 구하고 계속되는 추가 값 수정 및 구간합을 구하는 과정에서 많은 연산이 진행될거라 예상해서 예상 연산 횟수를 고려해봤습니다. 그러나 중간에 어떠한 수가 변경하게 되면 특정 수 이후의 모든 누적합이 변경해야 하거나, 다른 변수에 저장할 경우 특정 구간의 모든 수를 확인해야하는 단점이 예상되었고, 문제 조건에 따라 수의 개수 (최대 1,000,000) X 구간합 구하는 횟수 (최대 10,000) 으로 최악의 경우 10,000,000,000(10억의 연산)번으로 시간 초과 발생을 예상했습니다. 이후 다른 알고리즘을 알아보던 중 '세그먼트 트리' 알고리즘을 알게 되어 학습 후 적용시켰습니다. 2) 알고.. 2021. 12. 19.
[프로그래머스] 헤비 유저가 소유한 장소 문제 풀이 과정 1) 문제 이해 및 접근 해당 테이블에서 유저별로 몇개의 데이터를 가지고 있는지에 따라 출력이 필요하므로 그룹화를 이용하여 접근했습니다. 그룹화를 했을때, 여러 데이터를 모두 출력할 수 없기에 서브쿼리를 이용했습니다. 2) 풀이 코드 사용 언어 - Oracle SELECT * -- 모든 열 출력 FROM PLACES -- 테이블 WHERE HOST_ID IN ( SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(HOST_ID) >= 2 ) -- HOST_ID가 서브쿼리 결과에 속해 있는것만 필터링 -- 서브쿼리 => HOST_ID 그룹화를 하여 해당 그룹이 2개 이상의 데이터가 있는것만 필터링 ORDER BY ID; -- ID 순서대로 .. 2021. 12. 18.
[백준] 1167 트리의 지름 문제 풀이 과정 1) 문제 이해 및 접근 최초 문제를 접하였을때, 두개의 노드에서 가장 먼 거리를 구해야 하므로 DFS 탐색을 하여 가장 먼 거리를 구하는 방식으로 생각했습니다. 출발 노드가 어디냐에 따라 먼 거리가 달라질 수 있으므로 완전 탐색 방식으로 접근했습니다. 그러나 모든 노드를 완전 탐색하여야 했기 때문에 시간 초과가 발생했습니다. 시간 초과 문제를 해결하기 위해 고민 한 결과 모든 노드를 출발지로 선택하여 DFS 탐색을 해햐하는것이 비효율적이라 판단됬습니다. 고민한 결과 트리의 지름을 구하려할때 트리의 특징을 발견했습니다. 어떠한 노드에서 최초 1회 탐색을 하였을때, 가장 멀리 있는 노드의 번호를 알아내고 그 노드로 다시 한번 DFS 탐색을 하였습니다. 이러한 방식을 이용하면 트리에서 가장 .. 2021. 12. 18.
Phantom - 영화 추천 서비스 본 포스트는 프로젝트에 관한 간략한 설명, 관련 포스트 링크 내용등이 작성되어 있습니다. 상세 설명 및 코드, 서비스 화면 등을 확인하기 위해 중간에 작성된 Github 링크를 이용부탁드립니다. 🎁 Phantom 💡 프로젝트 소개 영화관으로의 복귀 가장 대중적인 문화 활동 중 하나인 영화 시청이 코로나가 창궐한 이후 사회적 거리두기로 영화 시청 인구 감소 및 영화관 방문 감소하였습니다. 코로나 백신 2차 접종이 전국 약 80%를 달성한 지금, 이 시점에 위드 코로나로 기존 일상으로 복귀와 함께 영화관으로 복귀를 바라는 사람들의 영화 추천 및 영화관 예매 안내, 넷플릭스 안내 서비스입니다. 📆 프로젝트 기간 2021-11-17 ~ 2021-11-25 (1주) 💻 프로젝트 상세 내용 (Github) 통합 R.. 2021. 12. 17.