알고리즘/Python

알고리즘/Python

[python] 백준 1003 - 피보나치 함수

출처 : 백준, https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 더보기 먼저, 생각해야 할 부분 1. 전형적인 DP 문제인데 해보면 규칙이 나오는 경우......... 풀이 T = int(input()) for _ in range(T): n = int(input()) dp = [[0 for _ in range(n+1)] for _ in range(2)] try: dp[0][0] = 1 dp[1][1] = 1 except: pass for i in range(2, n+1): dp[0][i] = dp[0][i-1] + dp[0][i-2] dp[..

알고리즘/Python

[python] 백준 2839 - 설탕 배달

출처 : 백준, https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 더보기 먼저, 생각해야 할 부분 1. 딱히 없지만, 알아두면 좋을 것이 이 문제는 2가지 방식으로 풀 수 있다. 문제를 풀고 자신이 문제를 푼 방식과 다른 방식으로도 한 번 더 풀어보자. 풀이1 : Greedy n = int(input()) a = n // 5 while True: if a < 0: print(-1) break new_N = n - a * 5 if new_N % 3 == 0:..

알고리즘/Python

[python] 프로그래머스 - 스킬 트리

출처 : 프로그래머스, https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 더보기 먼저, 생각해야 할 부분 1. 이전 것이 무조건 전에 포함되어야한다. 단순히 스킬 트리 상에 존재하는 것이 스킬 순서만 지키면 되는게 아니라 CBD에서 B가 포함될 경우 C도 존재하여야 한다. 풀이 def solution(skill, skill_trees): skill_set = set([char for char in skill]) count = 0 for tree in skill_trees: order = ''.join([char for char in tree if char in skill_set]) if ski..

알고리즘/Python

[python] 프로그래머스 - 여행 경로

출처 : 프로그래머스, https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 그냥 음 내 취향인 문제다. 틀은 잘 짰는데 예외 처리에서 오래 걸렸다. 더보기 먼저, 생각해야 할 부분 1. 같은 티켓이 2장일 수 있다. #Input [["ICN", "SFO"], ["SFO", "ICN"], ["ICN", "SFO"]] #Output ["ICN", "SFO", "ICN", "SFO"]..

알고리즘/Python

[python] 백준 1913 - 달팽이

출처 : 백준, https://www.acmicpc.net/problem/1913 1913번: 달팽이 N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서 www.acmicpc.net 와 이제 실버 1이다~ 더보기 풀이 #정사각형 테두리 채우기 point = None def fillBorder(left_top, right_bottom, map, target): global point s_i, s_j = left_top e_i, e_j = right_bottom length = (e_j - s_j + 1) * 4 - 4 number = (e_j - s_j + 1)*..

알고리즘/Python

[python] 백준 4396 - 지뢰 찾기

출처 : 백준, https://www.acmicpc.net/problem/4396 4396번: 지뢰 찾기 지뢰찾기는 n × n 격자 위에서 이루어진다. m개의 지뢰가 각각 서로 다른 격자 위에 숨겨져 있다. 플레이어는 격자판의 어느 지점을 건드리기를 계속한다. 지뢰가 있는 지점을 건드리면 플레이어 www.acmicpc.net 더보기 풀이 def makeNumber(current, map, output): i, j = current di = [0, 1, -1, 0, -1, -1, 1, 1] dj = [1, 0, 0, -1, -1, 1, -1, 1] mine = 0 if map[i][j] == '*': return True for index in range(8): ni = i + di[index] nj = ..

알고리즘/Python

[python] 백준 21608 - 상어 초등학교

출처 : 백준, https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 와 이 코드 156ms로 백준에서 Python3 풀이 중에 22등 했다. 대박 조건 설명이 너무 어려워서 간단하게만 설명하면, 학생들은 자신이 좋아하는 친구 4명을 선정하여 제출하였습니다. 우리는 다음과 같은 규칙에 따라 학생들의 자리를 선정해야합니다. 1. 각 자리를 기준으로 상하좌우에 내가 좋아하는 친구가 많이 앉아있는 자리를 우선합니다. 2. 좋아하는 친구가 많이 ..

알고리즘/Python

[python] 프로그래머스 - 단어 변환

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 이 문제는 오답인 풀이가 정답으로 통과되는 경우가 있다. 잘 체크해 볼 것. 더보기 BFS 풀이 : 틀림 def calcDistance(x, y): count = 0 for i in range(len(x)): if x[i] != y[i]: count += 1 return count..

알고리즘/Python

[python] 프로그래머스 - 네트워크

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 더보기 BFS 반복문 풀이 def solution(n, computers): #BFS visited = [False for _ in range(n)] count = 0 stack = [] for index in range(n): if not visited[index]: count += 1 stack.append(ind..

알고리즘/Python

[python] 프로그래머스 - 2 x n 타일링

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 programmers.co.kr 더보기 첫 번째 풀이 : 시간초과 def solution(n): dp = [1 for _ in range(n+1)] dp[2] = 2 for i in range(3, n+1): dp[i] = dp[i-1] + dp[i-2] return dp[n] % 1000000007 풀어본 문제라고 생각하고 아무 생각없이 풀..

알고리즘/Python

[python] 프로그래머스 - N-Queens

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/12952 코딩테스트 연습 - N-Queen 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 programmers.co.kr 더보기 풀이 stack = [] #퀸의 좌표를 넣는 공간. answer = 0 #방법의 수 def check(location): mx, my = location for queen in stack: x, y = queen if mx == x or my == y: return False if abs((mx - x..

알고리즘/Python

[python] 백준 16926 - 배열 돌리기 1

출처 : 백준, 더보기 풀이 def Solution(arr, TL, BR, R, bound_length): x1, y1 = TL x2, y2 = BR x = x1 y = y1 dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] index = 0 bound_list = [] for _ in range(bound_length): if x == x2 and y == y1: index+=1 elif x == x2 and y == y2: index+=1 elif x == x1 and y == y2: index+=1 bound_list.append(arr[x][y]) x += dx[index] y += dy[index] bound_list = bound_list[R :] + bound_list[: ..

제주도랏맨
'알고리즘/Python' 카테고리의 글 목록 (6 Page)