일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Algospot
- Python
- server
- 따배씨
- 종만북
- Cleancode
- 인프런
- 따라하며 배우는 C언어
- String
- BASIC
- 정수론
- sorting
- 생활코딩
- DP
- web
- php
- C언어
- 백준
- graph
- BOJ
- C
- dfs
- Algorithm
- 따라하면서 배우는 C언어
- greedy
- JavaScript
- programmers
- udemy
- BFS
- Math
- Today
- Total
목록Algorithm PS/BOJ (113)
몽상실현개발주의
[BOJ] 9465 / 스티커 / Python https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 풀이 주어진 데이터와 조건을 분석하여, 규칙을 찾으면 쉽게 풀리는 문제였다. 하지만 익숙한대로 손이 간다고, DFS 를 이용한 완전 탐색으로 구현해 보았다. import copy T = int(sys.stdin.readline()) def deleteStiker(i, j, stickers): stickers[i][j] = 0 if i: st..
[BOJ] 2193 / 이친수 / Python https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 풀이 경우의 수를 구하여 나열해 보았다. N = 1 -> 1 N = 2 -> 10 N = 3 -> 100 101 N = 4 -> 1000 1001 1010 N = 5 -> 10000 10001 10010 10100 10101 N = 6 -> 100000 100001 100010 100101 100100 101000 101001 101010 ..
[BOJ] 11058 / 오르막 수 / Python https://www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 풀이 BOJ / 10844 / 쉬운 계단 수 와 유사한 문제이다. 쉬운 계단 수 문제와 마찬가지로, 경우의 수를 이차원 배열로 정리하여 결과에 대한 연관성을 구하였다. 0 1 2 3 4 5 6 7 8 9 N = 1 ->1 1 1 1 1 1 1 1 1 1 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ N = 2 ->1 → 2 ..
[BOJ] 10844 / 쉬운 단계 수 / Python www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 처음 시도는 경우의 수가 정해져 있다고 생각하여, N 으로 구하는 점화식을 세우려고 하였다. 하지만 매우 복잡한 점화식이 세워졌고, 그 답은 보기 좋게 오답이 나왔다. 문제를 풀기 위한 생각의 방향은, 숫자의 자리수가 늘어날때 조건이 있고, 그 조건으로 인해 경우가 좁혀져 패턴이 발생한다는 것이다. N = 1 -> 1 2 3 4 5 6 7 8 9 N = 2 -> 10 12 21 23 32 34 43 45 54 56 65 67 76 78 87 89 98 N = 3 -..
[BOJ] 9095 / 1, 2, 3 더하기 / Python www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 풀이 제한된 조건으로 경우의 수를 구하는 문제이다. 경우의 수를 발생 시키는 일정한 규칙을 찾고 규칙에서 점화식을 찾아 해결 하였다. N = 1 -> 1 N = 2 -> 2 N = 3 -> 4 N = 4 -> 7 N = 5 -> 13 위의 규칙으로 구한 점화식은 dp(N) = dp(N-1) + dp(N-2) + dp(N-3) 점화식을 이용하여 Tabluation 으로 문제를 해결 하였다. T = int(input()) for _ in range(T)..
[BOJ] 11727 / 2×n 타일링2 / Python https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 풀이 11726 / 2 X n 타일링 문제에 조건이 추가되었다. N = 1 -> 1 N = 2 -> 3 N = 3 -> 5 N = 4 -> 11 N = 5 -> 21 추가된 조건의 경우의 수는 위와 같았다. 점화식: dp(N) = dp(N-1) + 2*dp(N-2) Tabluation 을 이용한 풀이는 다음과 같다. N = int(input()) dp = [0, 1, 3..
[BOJ] 11726 / 2×n 타일링 / Python https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 풀이 점화식을 사용하는 dp 문제 였다. N = 1 -> 1 N = 2 -> 2 N = 3 -> 3 N = 4 -> 5 N = 5 -> 8 N = 6 -> 13 경우의 수를 구해보니 점화식이 피보나치 수열과 같다는 것을 알 수 있었다. dp(N) = dp(N-1) + dp(N-2) 그래서 처음에는 재귀함수를 이용하여 시도 하였다. N = int(input()) d..
[BOJ] 1463 / 1로 만들기 / Python www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 풀이 처음 시도는 while 문을 이용한 조건으로 작성 하였다. X = int(input()) cnt = 0 while (1): if X == 1: break if X % 3 == 0: X //= 3 cnt += 1 elif X % 2 == 0: X //= 2 cnt += 1 else: X -= 1 print(cnt) 하지만, 반례인 10 에서 조건에 부합하지 않는 다는것을 생각하였다. 10 -> 9 -> 3 -> 1 이 아닌 10 -> 5 -> 4 -> 2 -> 1 이 나..