알고리즘/Python

알고리즘/Python

[python] 백준 15655 - N과 M (6)

출처 : 백준, https://www.acmicpc.net/problem/15655 15655번: N과 M (6) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 더보기 풀이 stack = [] def DFS(start, num_list, N, M): if len(stack) == M: for num in stack: print(num_list[num], end=' ') print() return for index in range(start, N): stack.append(index) DFS(index + 1, num_list, N..

알고리즘/Python

[python] 백준 15654 - N과 M (5)

출처 : 백준, https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 더보기 풀이 stack = [] def DFS(num_list, N, M): if len(stack) == M: for num in stack: print(num_list[num], end=' ') print() return for index in range(0, N): if index not in stack: stack.append(index) DFS(num_list, ..

알고리즘/Python

[python] 백준 15652 - N과 M (4)

출처 : 백준, https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 더보기 풀이 stack = [] def DFS(start, N, M): if len(stack) == M: for num in stack: print(num, end=' ') print() return for index in range(start, N+1): stack.append(index) DFS(index, N, M) stack.pop() if __name__ == '__m..

알고리즘/Python

[python] 백준 15651 - N과 M (3)

출처 : 백준, https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 더보기 풀이 stack = [] def DFS(N, M): if len(stack) == M: for num in stack: print(num, end=' ') print() return for index in range(1, N+1): stack.append(index) DFS(N, M) stack.pop() if __name__ == '__main__': N, M = map..

알고리즘/Python

[python] 백준 15650 - N과 M (2)

출처 : 백준, https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 더보기 풀이 stack = [] def DFS(start, N, M): if len(stack) == M: for num in stack: print(num, end=' ') print() return for index in range(start, N+1): stack.append(index) DFS(index + 1, N, M) stack.pop() if __name__ == ..

알고리즘/Python

[python] 백준 1748 - 수 이어 쓰기 1

출처 : 백준, https://www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net 더보기 풀이 if __name__ == '__main__': n = input() length = len(n) try: down_n = int("9" * (length - 1)) except: down_n = 0 ans = 0 for i in range(1, length): try: ans += (int('9' * i) - int('9' * (i-1))) * i except: ans += int('9' * i) * i ans += (int(n) - down_n) * length print(ans) 들어..

알고리즘/Python

[python] 백준 1012 - 유기농 배추

출처 : 백준, https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net DFS! DFS! 더보기 첫 번째 풀이 : RecursionError def DFS(current, matrix): dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] x, y = current if matrix[x][y]

알고리즘/Python

[python] 백준 6064 - 카잉 달력

출처 : 백준, https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 더보기 첫 번째 풀이 : 시간 초과 import math def lcm(N, M): G = math.gcd(N, M) return M * N // G if __name__ == '__main__': n = int(input()) for _ in range(n): N, M, x, y = map(int, input().split()) L = lcm(N, M) year = -1 for i ..

알고리즘/Python

[python] 백준 14500 - 테트로미노

출처 : 백준, https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 진짜 노가다 문제........겨우 맞았어........ 더보기 풀이 if __name__ == '__main__': n, m = map(int, input().split()) board = [] for i in range(n): board.append(list(map(int, input().split()))) blocks = [[(0,0), (0,1),(0,2),(0,3)],[(..

알고리즘/Python

[python] 백준 1476 - 날짜 계산

출처 : 백준, https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 진짜 너무 어렵다 이러면서 머리를 싸맸는데 바본가봐.........하긴 올해도 2022년인데........ 더보기 풀이 if __name__ == '__main__': E, S, M = map(int, input().split()) for i in range(7980): if i % 15 == E-1 and i % 28 == S-1 and i % 19 == M-1: print(i + 1..

알고리즘/Python

[python] 백준 14501 - 퇴사

출처 : 백준, https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 더보기 풀이 if __name__ == '__main__': date = int(input()) consult = [[0, 0]] for _ in range(date): consult.append(list(map(int, input().split()))) matrix = [[0] * (date+1) for _ in range(date+1)] for j in range(1, date + 1): for i in range(1, date + 1): first = matrix[i][j-1] score = consult[j][..

알고리즘/Python

[python] 백준 14889 - 스타트와 링크

출처 : 백준, https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 더보기 풀이 from itertools import combinations def calTeamScore(team, matrix): sum = 0 for i in range(0, len(team)): for j in range(i, len(team)): sum += matrix[team[i]][team[j]] + matrix[team[j]][team[i]] return sum if __name__ ==..

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