일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다리 만들기2
- 알고리즘
- Ajax
- 인스타그램
- 색종이 붙이기
- 17136
- 인스타
- 1182
- 9095
- 장고
- 17144
- 14888
- 17472
- 댓글
- 로또
- 14502
- 연산자 끼워넣기
- 구슬탈출2
- 부분수열의 합
- 재귀
- 미세먼지 안녕!
- Java
- 괄호추가하기
- 따라하기
- 17143
- 16637
- 6603
- django
- 좋아요
- 백준
- Today
- Total
목록백준 (59)
Be a developer
어렵다곳 생각하지말고 문제부터 천천히 읽는다.대충 읽다가 폴리오미노, 테트로미노가 뭔지 제대로 모르고 풀고 있었다.테트로미노는 위 사진에서 나오는 각각의 도형이다. 그리고 문제에서 구해야 하는 것을 제대로 읽지 않았는데, 테트로미노 5종류 중 하나를 놓았을 때 최대값을 구하는 것이다.(대칭 및 돌려서 나오는 모양도 포함 총 19가지) 다음으로 시간제한을 본다.도형을 돌려서 만들 수 있는 모든 경우의 수는 19가지이다. 그리고 N*M 안에 넣어야 하므로 19 * 500^2이 경우의 수의 최대값이다.천만을 넘지 않으므로 브루트포스로 풀 수 있다.모든 경우의 수를 어떻게 돌려보아야 할까? 테트로미노의 한 블럭을 기준으로 해서 모든 경우의 수를 돌려본다.코드가 복잡해지므로, 3차원 배열을 이용해서 테트로미노의 ..
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
생각해야할 알고리즘 종류를 크게 보면 부르트포스, BFS, 다이나믹 프로그래밍이 있다.먼저 브루트포스를 나누면 1. for문을 사용하는 방법2. 순열을 사용하는 방법3. 재귀 호출을 사용하는 방법4. 비트마스크를 사용하는 방법이 있다.브루트포스는 모든 경우의 수를 다 계산하므로, 풀려면 시간 제한을 봐야한다. 1초는 1억개의 경우의 수를 한계로 잡는다.보통 10*10! 정도 까지? 방법1. 문제의 가능한 모든 경우의 수를 계산해본다.2. 가능한 모든 방법을 다 만들어본다.3. 각각의 방법을 이용해 답을 구해본다. 위의 문제를 분석해보자.9명 중 7명을 골라서 합이 100이 되어야 한다.for문 7개를 사용해서 풀 수도 있지만, for문 2개를 이용할 수도 있다.(더 빠를 것, 연산이 줄어드니까)자세한 내..