본문 바로가기

CodingTest

(238)
[ BOJ / 파이썬 ] 2661 좋은 수열 백트래킹 부분 연습 중이다. 대충 함수 구성은 하는데 제일 중요한 백트래킹 부분 자체를 계속 버벅인다. 판별식 + 어떻게 이전 단계로 돌아갈 지 계속 생각 중. 해당 링크의 작성자 분의 코드가 내 아이디어에 가장 유사한 구현이었다. 부럽습니다. ㅎㅎ.. https://sungmin-joo.tistory.com/66 [백준] 2661번 좋은수열 Python 해설 (백트래킹 알고리즘) 출처 : https://www.acmicpc.net/problem/2661 2661번: 좋은수열 첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들.. sungmin-joo.tistory.com 이분 풀이가 다음에 비슷한 유형..
[ BOJ / 파이썬 ] 1182 부분수열의 합 보호되어 있는 글입니다.
[ BOJ / 파이썬 ] 1780 종이의 개수 (22.08.25) / 다시 제출 / import sys input = sys.stdin.readline n = int(input()) paper = [list(map(int, input().split())) for _ in range(n)] typeCount = {-1:0, 0:0, 1:0} def cut(x, y, n): if n == 1: typeCount[paper[x][y]] += 1 return type = checkPaper(x, y, n) if type != None: typeCount[type] += 1 return else: for i in range(3): for j in range(3): cut(x + (i * (n // 3)), y + (j * (n//3)), n //3) def ..
[ BOJ / 파이썬 ] 10870 피보나치 수 5 / 제출 1 / import sys input = sys.stdin.readline n = int(input()) def fibo(n): if n == 0: return 0 if n == 1: return 1 return fibo(n-1) + fibo(n-2) print(fibo(n)) : 워낙 베이직한 문제라 크게 어려울 것 없이 풀이했습니다.
[ BOJ / 파이썬 ] 1992 쿼드트리 / 제출 1 / import sys input = sys.stdin.readline n = int(input()) board = [list(input()) for _ in range(n)] def quadtree(startX,startY, endX, endY): print('(') compress = board[0][0] canCompress = True input() for i in range(startX, endX): for j in range(startY, endY): print(board[i][j], end="") if compress != board[i][j]: canCompress = False print("") if endX - startX
[ BOJ / 파이썬 ] 1991 트리 순회 재귀 진짜 너무 안 된다. 머리가 안 도는건가. https://fre2-dom.tistory.com/231 [baekjoon] 백준 1991번(파이썬): 트리 순회 문제 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름 fre2-dom.tistory.com 라고 우울해했었으나, 저녁 먹고 재귀 몇 문제 더 보고 다시 오니까 이해가 된다. 다시 으쌰으쌰해서 풀어봤다. / 제출 1 / import sys input = sys.stdin.readline n = int(input()) tree = {} start ='' for i in range(n): no..
[ BOJ / 파이썬 ] 1074 Z / 제출 1 / import sys input = sys.stdin.readline n, r, c = map(int, input().split()) def findOrderZ(n, r, c): if n == 0: return 0 half = 2**(n-1) if r < half and c < half: return findOrderZ(n-1, r, c) if r < half and half
[ BOJ / 파이썬 ] 11729 하노이 탑 이동 순서 어떤 분이 통곡의 하노이 탑이라고 적었던데 동의한다. 나는 왜 이 문제가 그 어떤 문제보다 이해가 안 되었을까.. 다행히 널리 알려진 문제라 설명이나 풀이가 많아 엄청 많이 찾아보고 각 설명의 핵심 포인트가 모여 이해 가능하게 정리되었다. 처음 접한 설명 https://blog.encrypted.gg/943?category=773649 [실전 알고리즘] 0x0B강 - 재귀 안녕하세요, 재귀 파트를 시작하겠습니다. 지금 자신있게 말할 수 있는게 있는데 이 파트가 정말 어려울 것입니다. 물론 이전의 내용들 중에서도 군데군데 어려운게 있었겠지만 이번 단원에서 blog.encrypted.gg 1. 재귀에 대해 다시 생각하자. 재귀는 절차지향적인 연산흐름과 떨어뜨려놓아야 한다. 사고를 바꿔야 쉽게 다가올 것. 2..
[ BOJ / 파이썬 ] 1697 숨바꼭질 / 제출 1 / from collections import deque n, k = map(int, input().split()) array = [0] * 1000001 q = deque([n]) def bfs(): while q: x = q.popleft() if x == k or array[k] != 0 : return array[k] if 0
[ BOJ / 파이썬 ] 4179 불! / 제출 1 / from collections import deque import copy r, c = map(int, input().split()) board = [list(input()) for _ in range(r)] # 상 우 하 좌 dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] jihoonBoard = copy.deepcopy(board) fireBoard = copy.deepcopy(board) jihoonStart = [] fireStart = [] for x in range(r): for y in range(c): if board[x][y] == 'J': jihoonBoard[x][y] = 1 fireBoard[x][y] = 0 jihoonStart = [(x, y)..