일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MAC
- DRF
- Git
- 백준
- PYTHON
- javascript
- Algorithm
- django widget
- django rest framework
- es6
- react
- 파이썬
- CSS
- 장고
- 파이썬 알고리즘
- 알고리즘
- js
- web
- API
- c++
- form
- HTML
- Django
- java
- 알고리즘 문제
- 알고리즘 연습
- 알고리즘 풀이
- AWS
- django ORM
- Baekjoon
- Today
- Total
목록분류 전체보기 (341)
수학과의 좌충우돌 프로그래밍
https://www.acmicpc.net/problem/1074 1074번: Z 한수는 2차원 배열 (항상 2^N * 2^N 크기이다)을 Z모양으로 탐색하려고 한다. 예를 들어, 2*2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, 2차원 배열의 크기가 2^N * 2^N라서 왼쪽 위에 있는 칸이 하나가 아니라면, 배열을 4등분 한 후에 (크기가 같은 2^(N-1)로) 재귀적으로 순서대로 방문한다. 다음 예는 2^2 * 2^2 크기의 배열을 방문한 순서이다. N이 주어졌을 때, (r, www.acmicpc.net 분할정복 을 사용하여 문제를 해결하였습니다. 기존에 하던 방식과 마찬가지로 2차원 배열을 선언하고 배열의 값을 전부 채운 후, 마지막에 인덱스..
Open Graph 카카오톡에서 어느 사이트의 주소를 보내면 해당 사이트에 대한 미리보기 화면이 나옵니다. 아마 의식하지는 않았지만 다들 한 번 쯤 보셨을 꺼라고 생각합니다. 위 이미지는 제 블로그를 카카오톡으로 보냈을 때 나오는 모습입니다. 대표 이미지, 콘텐츠의 제목, 내용, url 등의 내용을 담고 있습니다. 사용자가 클릭하기 이전에 크롤러가 해당 페이지를 미리 방문하여 head 에 meta 태그에서 정보를 크롤링하여 미리보기 화면을 생성합니다. 다음과 같은 미리보기가 깨져있거나 이상한 내용, 웹사이트에 맞지 않은 내용이라면 그 만큼 사용자들에 접근도 떨어질 것입니다. 그렇기 때문에 SEO 를 설정하는데 있어서도 Open Graph 를 설정하는 것은 중요합니다. Open Graph의 종류 open ..
https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 첫째 줄에 N이 주어진다. N은 항상 3의 제곱꼴인 수이다. (3, 9, 27, ...) (N=3k, 1 ≤ k < 8) www.acmicpc.net 분할정복 을 사용하여 문제를 해결하였습니다. 예제 출력을 확인하면 프렉탈의 형태로서 주어진 크기에 대해서 9개의 부분문제로 나누어 접근하였습니다. 이 때 가운데에 해당하는 i==1 && j==1 인 경우에는 continue 를 걸어줘서 건너뜀으로서 가운데를 비워주었습니다. 또한 배열을 처음에 " ", 공백으로 넣어줌으로서 초기화하였습니다. #include using namespace std; char board[2188][2188]; void solve(int ..
https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1≤N ≤64의 범위를 가진다. 두 번째 줄부터는 길이 N 의 문자열이 N 개 들어온다. 각 문자열은 0 또는 1의 숫자로 이루어져 있으며, 영상의 각 점들을 나타낸다. www.acmicpc.net 분할정복 을 사용하여 문제를 해결하였습니다. 주어진 크기에 대해서 4개로 나누어 부분 문제로 나누어 접근하였습니다. 현재 크기에 대해서 모든 값이 같은지 확인하는 check 함수와 전부 같다면 그 값을 출력하고, 다르다면 () 를 출력하고 부분문제로 나누는 solve 함수를 사용하였습니다. #include using names..
https://www.acmicpc.net/problem/2263 2263번: 트리의 순회 첫째 줄에 n(1≤n≤100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다. www.acmicpc.net 분할정복 을 사용하여 문제를 해결하였습니다. 먼저 트리의 순회하는 3가지 방법에 대해서 알아야합니다. inorder : Left —> root —> Right postorder : Left —> Right —> root preorder : root —> Left —> Right inorder 와 postorder 가 주어졌을 때 preorder 를 구하기 위해선 아래와 같은 과정을 거칩니다. postorder의 맨 뒤가 root ..
https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. 만약 종이가 모두 같은 수로 되어 있다면 이 종이를 그대로 사용한다. (1)이 아닌 경우에는 종이를 같은 크기의 9개의 종이로 자르고, 각각의 잘린 종이에 대해서 (1)의 과정을 반복한다. 이와 같이 종이를 잘랐을 때, -1로만 채워진 종이의 개수, 0으 www.acmicpc.net 분할정복 을 사용하여 문제를 해결하였습니다. 문제를 해결하는 핵심 함수 check 와 배열의 원소들이 같은지 확인하는 same 함수를..
https://www.acmicpc.net/problem/11728 merge sort 에서 나눠진 배열을 합치는 과정과 같습니다. 두 배열을 계속 비교하며 작은 값을 새로운 배열에 넣어주고, 한 쪽 배열의 수들이 끝났으면 남은 배열의 값들을 그대로 복사해서 뒤에 추가해주도록 합니다. #include #include using namespace std; int a[1000001]; int b[1000001]; int c[2000002]; int main(int argc, const char * argv[]) { cin.tie(0); ios::sync_with_stdio(false); int N,M; cin >> N >> M; for (int i=0;i> a[i]; } for (int i=0;i> b[i]..
https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5 www.acmicpc.net 기본적인 하노이탑 구현 문제입니다. #include using namespace std; void hanoi(int n,..
https://www.acmicpc.net/problem/2873 2873번: 롤러코스터 문제 상근이는 우리나라에서 가장 유명한 놀이 공원을 운영하고 있다. 이 놀이 공원은 야외에 있고, 다양한 롤러코스터가 많이 있다. 어느 날 벤치에 앉아있던 상근이는 커다란 황금을 발견한 기분이 들었다. 자신의 눈 앞에 보이는 이 부지를 구매해서 롤러코스터를 만든다면, 세상에서 가장 재미있는 롤러코스터를 만들 수 있다고 생각했다. 이 부지는 직사각형 모양이고, 상근이는 R행 C열의 표 모양으로 나누었다. 롤러코스터는 가장 왼쪽 위 칸에서 시작할 것이고, 가 www.acmicpc.net 그리디 알고리즘 을 사용하여 문제를 해결하였습니다. 가로와 세로의 길이에 따라서 갈 수 있는 경로가 다릅니다. 가로와 세로의 길이 중 ..
https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 그리디 알고리즘 을 사용하여 문제를 해결하였습니다. 세로에 대해서는 세로길이-2 까지, 가로에 대해서는 가로길이-2 까지 순회를 하며 행렬을 뒤집을지 말지 결정해주었습니다. (0,0) 부분에 대해서 영향을 미치는 경우는 좌측 상단 모서리에 위치한 3*3 부분 행렬을 뒤집을 때 뿐이고 이 연산을 수행한 후, (0,1) 부분에 영향을 미치는 경우는 (0,1) 부터 시작하는 3*3 부분 행렬을 뒤집을 때 뿐입니다. ..