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

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

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

본문 바로가기

알고리즘 문제풀이210

[프로그래머스] 헤비 유저가 소유한 장소 문제 풀이 과정 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.
[프로그래머스] 있었는데요 없었습니다 문제 풀이 과정 1) 문제 이해 및 접근 두개의 테이블에서 각자의 데이터가 필요하므로 JOIN 이용하였습니다. 일자의 빠른 순서를 비교연산자를 이용하여 구할 수 있으므로 간단한 조건문 이용하였습니다. 2) 풀이 코드 사용 언어 - Oracle SELECT ao.ANIMAL_ID, ao.NAME -- 보여줄 열 FROM ANIMAL_INS ai, ANIMAL_OUTS ao -- 조인할 두개의 테이블 WHERE ai.ANIMAL_ID = ao.ANIMAL_ID -- 두개의 테이블 조인 AND ai.DATETIME > ao.DATETIME -- 보호시작일 > 입양일 (입양일이 더 빠른 경우) ORDER BY ai.DATETIME; -- 보호시작일 빠른순 조회 결과 및 학습한 내용 1) 어려웠던 내용 Oracl.. 2021. 12. 17.
[백준] 9934 완전 이진 트리 문제 풀이 과정 1) 문제 이해 및 접근 문제에서 '완전 이진 트리' 및 주어진 조건, 노드의 총 개수 등을 확인하였을때, '포화 이진 트리' 라고 판단하였습니다. 트리의 중위 순회의 특징인 왼쪽 "자식 노드 / 부모 노드 / 오른쪽 자식 노드" 고려하여 재귀를 이용하는 풀이 방법을 생각했습니다. 2) 알고리즘 트리 순회 (중위 순회, In_order) 재귀 3) 풀이 코드 사용 언어 - Python import sys sys.stdin = open('input.txt') # 중위 순회를 하며 각 노드를 층별로 배치 시키는 함수 def solution(left, root, right, depth): # 왼쪽 자식 노드 시작 인덱스 / 부모 노드 인덱스 # 오른쪽 자식 노드 끝 인덱스 / 트리의 레벨 if.. 2021. 12. 17.
[HackerRank] Type of Triangle 문제 풀이 과정 1) 문제 이해 및 접근 테이블에서 각 열이 삼각형 변의 길이에 해당하는데, 이 변의 길이에 따라 어떠한 삼각형이 만들어지는지 문자로 출력해야함 조건에 따라 출력을 해야하므로 CASE WHEN THEN END 사용해야 함 2) 풀이 코드 사용 언어 - Oracle SELECT CASE WHEN A + B 2021. 12. 16.
[백준] 1535 안녕 문제 풀이 과정 1) 문제 이해 및 접근 세준이의 체력 한도안에서 최대의 기쁨을 얻기 위해 어떠한 사람들을 만났을때, 얻을 수 있는 최대 기쁨을 구해야 하므로 전형적인 배낭 문제(knapsack) 알고리즘을 활용하여 문제를 풀어나갈 수 있음 2) 알고리즘 배낭 문제 (Knapsack) 3) 풀이 코드 사용 언어 - Python 2차원 배열을 이용한 풀이 import sys sys.stdin = open('input.txt') N = int(sys.stdin.readline()) L = list(map(int, sys.stdin.readline().split())) # 사용 되는 체력 J = list(map(int, sys.stdin.readline().split())) # 얻게 되는 기쁨 pleasure.. 2021. 12. 16.