본문 바로가기

알고리즘60

[Python] 백준 2448번: 별 찍기 - 11 https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 문제를 보면 N번째 줄까지 별을 출력하고, N은 항상 3x2^k의 수입니다. N = 6 은 위, 대각왼쪽아래, 대각오른쪽아래가 N = 3 이 반복된 것을 볼수있습니다. N = 12 은 위, 대각왼쪽아래, 대각오른쪽아래가 N = 6 이 반복된 것을 볼수있습니다. 이렇게 N은, N / 2가 위, 대각왼쪽아래, 대각오른쪽아래로 만들어 진것입니다. 그럼 이 모든 값을 좌표로 저장하기 위해 2차원 배열을 만들고, 세로는 N개만큼, 가로는 2*N - 1만큼 만.. 2022. 3. 29.
[Python] 백준 2306번: 유전자 https://www.acmicpc.net/problem/2306 2306번: 유전자 DNA 서열은 4개의 문자 {a,c,g,t} 로 이루어진 문자열이다. DNA 서열에는 생명의 신비를 풀 수 있는 많은 정보가 들어 있다. 특히 KOI 유전자의 길이는 사람의 키와 깊은 상관 관계가 있다는 것이 알려 www.acmicpc.net 1. 현재와 끝이 a, t or g, c이면 앞뒤 둘다 자를 수 있고 그렇지 않으면 k인덱스를 기준으로 분할한다. 2. acattgagtc를 기준으로 하였을 때 a cattgagtc, ac attgagtc, aca ttgagtc, acat tgagtc 이런식으로 자를 수 있는데 앞뒤가 조건에 성립하면 acattgagt c 여기서, a cattgag t 앞뒤 한번에 분할할 수 있다... 2021. 11. 24.
[Python] 백준 13325번: 이진 트리 https://www.acmicpc.net/problem/13325 13325번: 이진 트리 각 에지에 양수인 가중치가 부여된 높이가 k인 포화이진트리가 주어져 있다. 높이 k인 포화이진트리는 2k개의 리프를 포함하여 (2k+1 − 1)개의 노드를 가진다. 루트에서 어떤 리프까지의 거리는 www.acmicpc.net 1. 현재노드를 기준으로 최장길이를 구한다. 현재노드 > 다음노드 길이 + 다음노드 최장길이 2. 최장길이를 기준으로 양쪽노드에서 길이가 작은 노드의 길이를 올려준다. ( 현재노드 > 다음노드 길이 = 현재노드의 최장길이 - 다음노드의 최장길이가 된다. 노드를 루트1부터 왼쪽부터 시작하면 3번 노드를 기준으로하면 최장길이는 3이된다. 3에서6번노드의 길이가 더 짧으므로 현재노드의 최장길이(3.. 2021. 11. 23.
[Python] 백준 2591번: 숫자카드 https://www.acmicpc.net/problem/2591 2591번: 숫자카드 1부터 34까지 수가 적힌 카드가 충분히 많이 있다. 이들 중 몇 장을 일렬로 늘어놓고, 그 숫자를 차례로 적었다. 예를 들어 아래와 같이 카드가 놓인 경우 숫자를 차례로 적으면 27123이 된다. 나중 www.acmicpc.net 1. 카드는 1부터 34까지 있으므로 dp[숫자의길이][34]로 만들어준다. 2. 전의수 * 10 + 현재수 2021. 11. 22.