Programming/Algorithm 237

[백준] #1309 동물원 python

https://www.acmicpc.net/problem/1309 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net 📕 설명 📕 DP를 이용하여 풀이하였다. 풀이법은 알아도 와닿지는 않는다. 다시 풀어보기. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 import sys N = int(sys.stdin.readline()) dp = [0] * (N+1) for i in range(N + 1): dp[i] = [0, 0, 0] dp[1][0] = 1 dp[1][1] = 1 dp[1][2] = 1 for i in range(2, N + 1): dp[i][0] = (dp[i - 1][0] + dp[i - 1][1] + dp[i - 1][2]) % 9901 dp[i]..

[백준] #1821 수들의 합 6 python

https://www.acmicpc.net/problem/1821 1821번: 수들의 합 6 첫째 줄에 두개의 정수 N(1 ≤ N ≤ 10)과 F가 주어진다. N은 가장 윗줄에 있는 숫자의 개수를 의미하며 F는 가장 밑에 줄에 있는 수로 1,000,000 이하인 자연수이다. www.acmicpc.net 📕 설명 📕 파스칼 삼각형의 공식을 이용하여 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 import sys def dfs(idx, result): global finish if finish or result > sum: return if idx == N: if sum == result: for i in range(N): print(ans[i], end=" ") finish = True return for i..

[백준] #1286 부분 직사각형 python

https://www.acmicpc.net/problem/1286 1286번: 부분 직사각형 오민식은 크기가 N×M 이고, 문자로 채워져있는 직사각형 표를 하나 가지고 있다. 이 표를 복사해 표가 2×2 크기의 직사각형을 이루게 만든다. 그 다음, 복사해서 만든 표의 모든 부분 직사각형을 www.acmicpc.net 📕 설명 📕 python의 ord를 이용하여 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, M = map(int,input().split()) result = [0]* 26 for i in range(N): row = (i+1) * (2*N - i) + (i + N + 1) * (N - i) S = input() for j in range(M): col = (j + 1) * (2 * M - ..

[백준] #1141 접두사 python

https://www.acmicpc.net/problem/1141 1141번: 접두사 접두사X 집합이란 집합의 어떤 한 단어가, 다른 단어의 접두어가 되지 않는 집합이다. 예를 들어, {hello}, {hello, goodbye, giant, hi}, 비어있는 집합은 모두 접두사X 집합이다. 하지만, {hello, hell}, {giant, www.acmicpc.net 📕 설명 📕 python list를 길이별로 정렬을 사용하였다. 그리고 해당 값들에 대해 접두사를 조사했다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 import sys N = int(input()) words = [(sys.stdin.readline()).rstrip() for _ in range(N)] words.sort(key=len) src =..

[백준] #5046 전국 대학생 프로그래밍 대회 동아리 연합 python

https://www.acmicpc.net/problem/5046 5046번: 전국 대학생 프로그래밍 대회 동아리 연합 첫째 줄에 참가자의 수 1 ≤ N ≤ 200, 예산 1 ≤ B ≤ 500000, 호텔의 수 1 ≤ H ≤ 18, 고를 수 있는 주의 개수 1 ≤ W ≤ 13이 주어진다. 다음 줄부터 각 호텔의 정보가 주어지며, 호텔의 정보는 두 줄로 www.acmicpc.net 📕 설명 📕 python의 list를 여러 개 사용하여 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, B, H, W = map(int, input().split()) cost = [] hotel = [] total = [] for i in range(H): cost.append(int(input())) hotel.append(l..

[백준] #2669 직사각형 네개의 합집합의 면적 구하기 python

https://www.acmicpc.net/problem/2669 2669번: 직사각형 네개의 합집합의 면적 구하기 입력은 네 줄이며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어진다. 첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭짓점의 x좌표, y좌표이고 세 번째와 네 번째의 정수는 사각 www.acmicpc.net 📕 설명 📕 전체에 대해서 채워나가는 식으로 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 box = [[0 for _ in range(101)] for _ in range(101)] for _ in range(4): x1, y1, x2, y2 = map(int, input().split()) for i in range(x1, x2): for j in range(y1, y2):..

[백준] #1535 안녕 python

https://www.acmicpc.net/problem/1535 1535번: 안녕 첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 www.acmicpc.net 📕 설명 📕 Knapsack으로 풀이하였다. 방법론으로만 접근하여 잘 이해는 안 된다. 나중에 다시 풀어봐야지. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 from sys import stdin N = int(input()) people = [0] + list(map(int, stdin.readline().split())) happiness = [0] + list(map(int, stdin.readline()..

[백준] #1138 한 줄로 서기 python

https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 📕 설명 📕 python의 for loop에서 사용 가능한 enumerate를 사용하였고, 줄 세우기 위해, 중복을 제거하여 예외처리 하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N = int(input()) N_list = list(map(int, input().split())) src = [0] * N result_list = [] for i, val in enumerate(N_list): t..

[백준] #1455 뒤집기 II python

https://www.acmicpc.net/problem/1455 1455번: 뒤집기 II 세준이는 동전 뒤집기를 하려고 한다. 세준이는 동전을 N×M개 가지고 있다. 동전은 세로로 N개, 가로로 M개 크기의 직사각형에 차곡차곡 놓여져 있다. 동전의 앞면을 0이라고 하고 뒷면을 1이라고 www.acmicpc.net 📕 설명 📕 python의 역 indexing을 이용해서 쉽게 풀이하였다. 입력을 받는 과정에서 값을 integer로 받아오기 위해 map을 사용했다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, M = map(int, input().split()) src = [] for _ in range(N): tmp = [] for i in input(): tmp.append(i) tmp = list(map(int..

[백준] #1441 비슷한 단어 python

https://www.acmicpc.net/problem/1411 1411번: 비슷한 단어 첫째 줄에 단어의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에 한 줄에 하나씩 단어가 주어진다. 단어의 길이는 최대 50이고, N은 100보다 작거나 같은 자연수이다. 모든 단어의 길이는 같고, 중복 www.acmicpc.net 📕 설명 📕 python의 combinations를 이용하여 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 from itertools import combinations def is_Similar(s1, s2): s = [] for i in [s1, s2]: alpha = [] a = "" for j in i: if j not in alpha: alpha.append(j) a += str(al..