일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 괄호추가하기
- 17472
- 17136
- 1182
- 미세먼지 안녕!
- 따라하기
- django
- 17143
- 다리 만들기2
- 백준
- 6603
- 로또
- 알고리즘
- 인스타
- 17144
- 구슬탈출2
- 인스타그램
- 16637
- 부분수열의 합
- Java
- 장고
- 14888
- 9095
- 좋아요
- Ajax
- 색종이 붙이기
- 연산자 끼워넣기
- 14502
- 댓글
- 재귀
- Today
- Total
Be a developer
순열은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다. 다음 순서의 순열을 찾으려면 c++에서는 next_permutation과 prev_permutation이 존재하기 때문에 사용하면 된다. 직접 구현하기 위한 방법은 아래와 같다. 1. A[i-1] =i 이면서 A[j] > A[i-1] 를 만족하는 가장 큰 j를 찾는다.(다음 순열은 순열을 하나의 수로 봤을 때 더 큰 수가 되어야 하므로, A[i-1]보다 큰 수를 앞으로 가져와야 한다. 작은 수를 앞으로 가져오는 것은 작은 수로 바꾸는 것이기 때문이다.) 3. A[i-1]과 A[j]를 swap한다. 4. A..
모든 방법의 수를 구하는 것이기 때문에 브루트포스로 푼다. 1,2,3 3가지 경우가 10번 가능하기 때문에 최대 3^10의 시간복잡도이다. 하지만 1을 10자리로 했을 때 최대의 경우의 수가 생기므로 3^10보다는 작을 것이다. 3^10도 1초의 제한시간 안에 가능하다. for문으로 풀려면 10개의 for문을 작성해야한다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include int main() { int t; scanf("%d",&t); while (t--) { int ans = 0; int n; scanf("%d",&n); for (i..
어렵다곳 생각하지말고 문제부터 천천히 읽는다.대충 읽다가 폴리오미노, 테트로미노가 뭔지 제대로 모르고 풀고 있었다.테트로미노는 위 사진에서 나오는 각각의 도형이다. 그리고 문제에서 구해야 하는 것을 제대로 읽지 않았는데, 테트로미노 5종류 중 하나를 놓았을 때 최대값을 구하는 것이다.(대칭 및 돌려서 나오는 모양도 포함 총 19가지) 다음으로 시간제한을 본다.도형을 돌려서 만들 수 있는 모든 경우의 수는 19가지이다. 그리고 N*M 안에 넣어야 하므로 19 * 500^2이 경우의 수의 최대값이다.천만을 넘지 않으므로 브루트포스로 풀 수 있다.모든 경우의 수를 어떻게 돌려보아야 할까? 테트로미노의 한 블럭을 기준으로 해서 모든 경우의 수를 돌려본다.코드가 복잡해지므로, 3차원 배열을 이용해서 테트로미노의 ..
vscode를 실행시킵니다.Ctrl + Shift + E 누르거나 왼쪽 편에 빨간색 박스를 누르면 작업을 위한 폴더 목록이 나옵니다.노란색 박스안에 오른쪽 클릭을 하면 Add Folder to Workspace가 나오는 데, 작업할 폴더를 하나 만든 후 add를 눌러 추가합니다. 밑에 빨간 줄이 있는 창은 터미널입니다. 주황색 박스로 TERMINAL이라고 적혀 있죠?만약 vscode를 켰는데, 아무것도 없다면 Ctrl+`(숫자 1의 왼쪽 편에 있는 키보드, 물결표 밑에)를 누르면 뜹니다. 빨간 줄을 보시면 /d/project/repo/insta라고 적혀 있는데, 이는 현재 작업중인 디렉토리 입니다.명령어를 입력할 때 항상 현재 작업중인 디렉토리를 잘 보고 해야 합니다.(명령어를 실행하면 안 되는 디렉토리..
15 * 28 * 18 = 7980이기 때문에 시간 제한안에 모든 경우의 수를 다 해볼 수 있다. 각각 최대치를 넘어갈 때 1로 초기화시켜주고, 주어진 날과 일치할 때 멈춘 후 year를 출력한다. 12345678910111213141516171819202122#include using namespace std; int main(int argc, char* argv[]) { int e, s, m, E, S, M; long long year; e = s = m = year = 1; cin >> E >> S >> M; while(true){ if (e == E && s == S && m == M) { cout
h4 태그에 instagram 글자를 넣었다. 그 결과 3줄로 바꼈다. 이유는 i tag는 inline element이고, div는 block element이기 때문이다. inline과 block element에 속하는 tag는 여기서 볼 수 있다. 설명은 여기서 볼 수 있다.따라서 div를 inline으로 바꿔줘야 위의 모든 element가 한 줄에 들어갈 것이다.일단 head 태그 안에 style 태그를 넣어서 css를 적용시켜 준다.그 결과한 줄로 잘 들어갔다.다음으로는 instagram 글자 까지는 왼쪽에, 나머지 아이콘들은 오른쪽으로 이동시켜야 한다. 따라서 두 개의 박스로 나눠준 후 큰 박스(div) 안에 넣어준다. left div와 right div를 나눠주기 위해서는 flex를 이용한다.(..
html, css를 통해 페이지를 만들려면 우선 인스타그램의 layout을 분석해야 한다. 일단 상단의 navbar가 보인다. 스크롤을 내려도 고정되어 있는 것을 볼 수 있다. 그리고 아이콘 몇 개와 인스타그램 글자, 검색창이 보인다.그리고 다른 페이지로 넘어가도 항상 있다. 따라서 모든 페이지에 공통적으로 적용되는 부분이라고 할 수 있다. 이렇게 공통적인 부분은 템플릿 상속을 통해 구현한다. 상속을 위해서 먼저 상속되는 파일들을 담을 공간을 만든다. 아래와 같이 home app과 같은 계층에 폴더를 만든다. 그 안에 상속될 base.html 파일을 만들어 준다. 그리고 상속 받을 home.html에서 아래와 같이 템플릿 태그안에서 extends를 통해 상속받는다. block content와 endblo..
생각해야할 알고리즘 종류를 크게 보면 부르트포스, BFS, 다이나믹 프로그래밍이 있다.먼저 브루트포스를 나누면 1. for문을 사용하는 방법2. 순열을 사용하는 방법3. 재귀 호출을 사용하는 방법4. 비트마스크를 사용하는 방법이 있다.브루트포스는 모든 경우의 수를 다 계산하므로, 풀려면 시간 제한을 봐야한다. 1초는 1억개의 경우의 수를 한계로 잡는다.보통 10*10! 정도 까지? 방법1. 문제의 가능한 모든 경우의 수를 계산해본다.2. 가능한 모든 방법을 다 만들어본다.3. 각각의 방법을 이용해 답을 구해본다. 위의 문제를 분석해보자.9명 중 7명을 골라서 합이 100이 되어야 한다.for문 7개를 사용해서 풀 수도 있지만, for문 2개를 이용할 수도 있다.(더 빠를 것, 연산이 줄어드니까)자세한 내..