전체 보기232 [백준] 1202 보석 도둑 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 가방에 담을 수 있는 모든 보석들 중 가장 가치가 높은것을 담으면 최대 가치를 얻을 수 있습니다. 그리디 방식으로 접근하여 풀이했습니다. 2) 알고리즘 그리디 3) 풀이 코드 사용 언어 - Python import sys import heapq from collections import deque sys.stdin = open('input.txt') N, K = map(int, sys.stdin.readline().split()) # 보석의 개수, 가방의 개수 gems = deque(sorted([list(map(int, sys.stdin.readline().split())) for _ in range(N)], key=lambda x: x[0])) #.. 2022. 4. 9. 말듣꾸 - 방언 분류 서비스 본 포스트는 프로젝트에 관한 간략한 설명, 관련 포스트 링크 내용등이 작성되어 있습니다. 상세 설명 및 코드, 서비스 화면 등을 확인하기 위해 중간에 작성된 Github 링크를 이용부탁드립니다. 🎁 말듣꾸 💡 프로젝트 소개 교통과 기술의 발전으로 과거와 다르게 지역간 교류가 활발하게 이루어지고 있습니다. 특정 지역의 방언을 구사하는 드라마와 영화가 많이 나오고 있고, 주변에 특정 지역 사투리를 구사하는 지인들이 많이 있습니다. 이러한 환경으로 내가 자란 환경과 다른 지역의 방언을 구사하는 경우도 있습니다. 사용자가 주어진 텍스트를 녹음하여 제출하면 여러 지역 방언을 학습한 인공지능 모델이 사용자의 억양과 유사한 지역 방언을 비율로 알려주게 됩니다. 테스트 결과에 따라 지역을 모티브로 제작한 캐릭터를 이용.. 2022. 4. 5. [백준] 2749 피보나치 수 3 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 피보나치 수열을 구하고 특정 수로 나누었을때 나머지의 값을 구하는 문제였습니다. 단순히 메모이제이션을 이용하여 풀이를 하려 하였으나, 입력 값이 최대 1,000,000,000,000,000,000 으로 매우 큰 수이므로 메모이제이션을 이용하더라도 시간 초과가 우려되었습니다. 학습 진행 중 피사노 주기 라는 내용을 학습하게 되어 피사노 주기를 이용하여 풀이했습니다. 2) 알고리즘 수학 3) 풀이 코드 사용 언어 - Python import sys sys.stdin = open('input.txt') N = int(sys.stdin.readline()) period = 15 * 10 ** 5 # 나누는 수가 10^k 일때, 나머지는 주기를 이루는데 주기는.. 2022. 4. 2. [백준] 1987 알파벳 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 상하좌우칸을 이동하면서 지나온 정보들을 집합으로 저장하여 기록 및 중복 여부를 확인하였습니다. 시간초과를 고려하여 집합을 이용하여 알파벳을 기록하였으나 시간초과가 발생하였습니다. 이후 리스트에서 좌표들의 정보를 가지고 탐색하던것을 중복을 줄이기 위하여 집합을 이용하였습니다. 2) 알고리즘 DFS 3) 풀이 코드 사용 언어 - Python import sys sys.stdin = open('input.txt') dr = [-1, 0, 1, 0] # 위 오른쪽 아래 왼쪽 dc = [0, 1, 0, -1] def solution(): global answer s = set([(0, 0, board[0][0])]) # 좌표, 지나온 좌표들의 알파벳 기록 (시.. 2022. 3. 31. [백준] 10800 컬러볼 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 공의 색이 최대 200,000 개가 나올 수 있으므로 단순 이중 반복문으로 풀이시 시간초과 문제가 발생할것을 예상하였습니다. 1차적으로 공의 크기별로 정렬을 하였고 크기가 작은 순서대로 확인하며 누적합을 쌓는 방법을 이용하였습니다. 그러나 사이즈가 같은 공이 여러개 나오는 경우, 다음 순서 진행시 누적합에 같은 사이즈의 합도 포함이 되는 오류가 발생하였습니다. 이러한 문제 해결을 위해 같은 사이즈 발견시 처리해주는 코드를 작성하였습니다. 2) 알고리즘 누적합 3) 풀이 코드 사용 언어 - Python import sys sys.stdin = open('input.txt') N = int(sys.stdin.readline()) # 공의 개수 infos .. 2022. 3. 30. [백준] 9370 미확인 도착지 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 최단거리로 이동을 하기 때문에 다익스트라를 이용하여 풀이했습니다. 최초 풀이시 각 노드로 이동하는 최단 경로를 저장하였습니다. 메모리 초과 문제가 발생하여, 출발지, g, h 노드에서 출발하는 최단 거리를 모두 구해주었습니다. 2) 알고리즘 다익스트라 3) 풀이 코드 사용 언어 - Python import sys import heapq sys.stdin = open('input.txt') def solution(start): heap = [(0, start)] distance = [-1] * (n+1) # 반환할 최단 거리 while heap: node = heapq.heappop(heap) if distance[node[1]] == -1: # 도착하.. 2022. 3. 29. [백준] 15900 나무 탈출 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 재귀를 이용하여 모든 리프 노드에서 루트 노드까지의 거리를 구한 후, 모두 더한 값을 구하였습니다. 모든 리프 노드의 더해진 값이 짝수인지 홀수인지 여부에 따라 이길 수 있는지 없는지 구하였습니다. 2) 알고리즘 재귀 트리 3) 풀이 코드 사용 언어 - Python import sys sys.setrecursionlimit(1000000) sys.stdin = open('input.txt') def solution(node): global need_move is_leaf = True # 현재 노드가 리프노드인지 구분을 위함 for next in linked[node]: if not distance[next]: # 방문하지 않은 노드들이라면 distan.. 2022. 3. 28. [프로그래머스] 등굣길 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 2차원 배열의 각 칸별로 도착할 수 있는 경우의 수를 저장하였습니다. 2차원 배열의 누적합을 구하는 방법과 유사하게 접근하였습니다. 2) 알고리즘 DP 누적합 3) 풀이 코드 사용 언어 - Python def solution(m, n, puddles): dp = [[0] * (m+1) for _ in range(n+1)] # 2차원 배열 생성, 누적합과 유사하여 가장 왼쪽 열과 가장 위의 행을 0으로 모두 채움 dp[0][1] = 1 # 출발지 (1, 1) 에 도착 가능한 경우의 수를 1개로 만들기 위함 for i in range(1, n+1): # 2차원 배열 반복 for j in range(1, m+1): if [j ,i] in puddles: #.. 2022. 3. 27. [프로그래머스] 정수삼각형 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 삼각형의 각 층별로 나올 수 있는 최댓값들을 기록하였습니다. 다음 층을 계산할때 이전층의 최댓값에서 현재 더할 수 있는 값들을 더하고 더 큰 값들을 저장하였습니다. 2) 알고리즘 DP 3) 풀이 코드 사용 언어 - Python def solution(triangle): N = len(triangle) # 삼각형의 높이 dp = [] # 삼각형의 높이별 나올 수 있는 값 dp.append(triangle[0]) # 가장 위에층 설정 n = 1 # 현재 높이 while n < N: # 현재 높이가 삼각형의 높이 보다 작으면 반복 tmp = [] # 현재 층의 정답 경우의 수 tmp.append(dp[-1][0] + triangle[n][0]) # 현재 층.. 2022. 3. 26. [백준] 2146 다리 만들기 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 섬들간에 다리를 놓아야 하므로, 섬들을 구분하기 위해서 DFS 탐색을 이용하여 섬들에 서로 다른 번호를 매겼습니다. 섬마다 경계선 부분의 좌표들을 모두 구하여 각 섬들의 경계선끼리 거리를 구해주었습니다. 2) 알고리즘 BFS 3) 풀이 코드 사용 언어 - Python import sys from collections import deque sys.stdin = open('input.txt') dr = [-1, 0, 1, 0] # 위 오른쪽 아래 왼쪽 dc = [0, 1, 0, -1] def numbering(y, x, num): # 섬마다 숫자를 매김 q = deque([(y, x)]) board[y][x] = num # 현재 위치부터 섬 번호를 매김.. 2022. 3. 24. [백준] 5014 스타트링크 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 목표하는 층을 이동하기 위해 최소한으로 누르는 버튼 횟수를 구해야하여 BFS 탐색을 이용하였습니다. 2) 알고리즘 BFS 3) 풀이 코드 사용 언어 - Python import sys from collections import deque sys.stdin = open('input.txt') def bfs(start): # BFS 탐색 q = deque([start]) visited[start] = 0 # 시작 층은 0번 눌러서 도착하므로 0으로 초기화 while q: floor = q.popleft() n1, n2 = floor + U, floor - D # 올라가는 층, 내려가는 층 if n1 2022. 3. 23. [백준] 13460 구슬탈출 2 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 구슬 두개를 이용하여 상하좌우를 10번 이하로 움직여 공 하나만 구멍으로 빼내야 했습니다. 보드판을 상하좌우로 기울이는 횟수가 10번이 되어야 하므로 재귀를 이용한 탐색으로 구현하였습니다. 2) 알고리즘 구현 재귀 3) 풀이 코드 사용 언어 - Python import sys sys.stdin = open('input.txt') dr = [-1, 0, 1, 0] # 위 오른쪽 아래 왼쪽 dc = [0, 1, 0, -1] def solution(ans, blue, red, direction): # 기울인 횟수, 파란공의 좌표, 빨간공 좌표, 기울인 방향 global answer if ans > 10: # 10번 넘게 기울인 경우 탐색 중지 return .. 2022. 3. 22. 이전 1 ··· 6 7 8 9 10 11 12 ··· 20 다음