Programming/Algorithm
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/Fat6P/btsgqBynQWP/JVEH4Un8w3eg2Dz3mpuqH1/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 📕 설명 📕 divide and conquer 방법을 사용하였다. 🧑🏻💻 나의 풀이 🧑🏻💻 import sys def divide_conquer(x, y, N): global cut, blue color = paper[x][y] for i in range(x, x + N): for j in range(y, y + N): if color != paper[i][j]: d..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bbMUwS/btsgpXMV05x/KnIbDK0Kb5nRQameW3X3k0/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 📕 설명 📕 dfs를 활용하여 종이가 있는 부분을 찾기 위해서 size 살피었다. 🧑🏻💻 나의 풀이 🧑🏻💻 import sys def solution(x, y, N): global minus_one, zero, one color = paper[x][y] for i in range(x, x + N): for j in range(y, y + N): if color != paper[i][..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/dlAadI/btsgcOElGem/zb6JmbbjTJfyuQxWiVeWjK/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
https://www.acmicpc.net/problem/2161 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 📕 설명 📕 아래 수식과 같이 맨 앞에 것을 넣고, 그리고 바로 뒤의 것을 빼어 바로 맨 뒤로 보내주는 형식이다. 홀짝 개념으로 다가가봤는데 예외처리하기 귀찮아서 그냥 코드를 바꾸었다. 🧑🏻💻 나의 풀이 🧑🏻💻 N = int(input()) N_list = [i+1 for i in range(N)] result = [] while len(N_list) != 1: result.append(N_..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/dpUqdR/btsf5faW2Nc/9bgaEVj7y09mZGju3OUze0/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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]..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bFspPm/btsfWX01D4S/rvu9MON5PfLqPqDYSVLomk/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/And3x/btseQVEy2ey/XNQB9k3KHpoJJNtHwlHnGK/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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 - ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bycdhV/btseKb1P3SF/QtBJBCOoMk04gUKFi129N1/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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 =..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/y3KGa/btseAUl15G8/T4t9SijQkyycqB5yimWlJk/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/sllrb/btsexg8Utgd/i1kRsZMgg3ROhdzYBDDeQK/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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):..