일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 구현
- 에라토스테네스의 체
- 누적 합
- 수학
- BFS
- 이분 탐색
- 그리디
- 13164
- 트리
- 정렬
- boj
- 정수론
- 싸피
- 2357
- JavaScript
- 세그먼트 트리
- 맵
- DFS
- 애드 혹
- 그래프
- 브루트포스
- 투 포인터
- SSAFY
- 플로이드-워셜
- 해시 테이블
- Python
- 슬라이딩 윈도우
- 문자열
- DP
- 모던 JavaScript 튜토리얼
- Today
- Total
목록전체 글 (271)
흙금이네 블로그
아이디어 #1 비트마스킹으로 0~9의 수를 모두 사용했는지 여부를 확인하여 DP 테이블을 채워 값을 구한다. 풀이 #1 N, 시작 숫자, 사용 표시 비트 정보를 저장하는 3차원 리스트 dp를 생성하고, 0~9의 숫자에 대해 초기값을 설정한다. for문에서 0부터 1023(2진수 1111111111)까지의 비트로 해당 숫자를 사용하는 경우의 수를 dp에 누적하여 더해 나간다. 0과 9는 각각 1과 8에서 오는 경우를 더하고, 나머지 숫자들은 1만큼 차이나는 숫자로부터 오는 경우를 더한다. 시작 숫자가 1~9인 계단 수의 개수를 1,000,000,000로 나눈 나머지를 구해 출력한다. N = int(input()) dp = [[[0]*(1
아이디어 입력 받은 2차원 배열을 바깥쪽부터 안쪽으로 한 층씩 값을 R만큼 이동하여 새로운 2차원 리스트에 저장한다. 풀이 #1 (Python) N을 문자열로 입력 받고, 최종값을 저장하는 리스트 res를 만들고 함수 make_odd를 호출한다. 함수 make_odd에서 현재 숫자 n에서 홀수 개수를 total에 더하고, n의 길이를 m에 저장한다. 숫자의 길이가 1이면 total을 res에 추가하고 함수를 종료하고, 숫자의 길이가 2면 두 숫자를 더해 재귀 호출한다. 숫자의 길이가 3 이상이면 for문에서 i, j를 기준으로 n을 3개의 수로 분할하여 더한 값으로 재귀 호출한다. 함수가 모두 종료되면 res에서 최솟값과 최댓값을 출력한다. def make_odd(n, total): total += su..
아이디어 크기가 N인 순열로 만들어진 새로운 문자열의 패턴이 K가 되는 순열의 수를 구한다. 풀이 #1 입력 받은 단어들을 리스트 S_list에 저장하고, 순열을 만드는 함수 perm을 호출한다. 함수 perm의 for문에서는 차례로 순열에 따라 S_list의 단어를 배치하고 재귀 호출한다. 순열의 배치를 마치면 join으로 새로운 문자열을 만들고, 딕셔너리 S_dict에 문자열을 키로 문자열의 수를 저장한다. 함수 perm이 종료된 후 S_dict에 저장된 문자열 S와 문자열 수 cnt를 차례로 꺼내 문자열의 길이를 문자열 패턴의 길이로 나눈 값이 K이면 결과값 res에 cnt를 더한다. def perm(idx): if idx >= N: S = ''.join(S_list) if S in S_dict: ..