분류 전체보기

·CS/알고리즘
8퀸 문제체스판에 각 8개의 퀸이 서로 공격하여 잡을 수 없도록 8 * 8 체스판에 배치하는 문제 위 조건을 만족하기 위해서는 아래의 규칙들을 만족해야 한다. 규칙1: 각 열에 퀸을 1개만 배치한다.규칙2: 각 행에 퀸을 1개만 배치한다. 그러나 이 규칙들만으로 답을 찾는 것은 쉽지 않다.따라서 이 때 분기 작업으로 문제를 해결해야 한다.분기 작업이란 가지가 뻗어 나가듯이 배치 조합을 열거하는 것을 의미한다. 이 때, 만약 i열의 j번째 행에 퀸이 놓여져 있다면, 배열 pos[i]를 j로 설정한다. # 각 열에 퀸을 1개 배치하는 조합을 재귀적으로 나열하기pos = [0] * 8def put() -> None: """각 열에 배치한 퀸의 위치를 출력""" for i in range(8): ..
·CS/알고리즘
하노이의 탑작은 원반이 위에, 큰 원반이 아래에 위치하는 규칙을 지키면서 기둥 3개를 이용해서 원반을 옮기는 문제이다.원반이 n개인 하노이탑 문제는 원반이 n-1개인 하노이탑 문제를 사용하여 재귀적으로 풀이할 수 있다.원반이 3개인 하노이 탑은 위와 같다.그리고, 이 과정에서 작은 원반 2개를 묶어서 생각할 수 있는데, 이 처럼 원반이 n개인 하노이탑 문제를 재귀적으로 풀이할 수 있다.  구현(기둥이 3개일 때)# 하노이의 탑 구현하기def move(no: int, x: int, y: int) -> None: """원반 no개를 x 기둥에서 y 기둥으로 옮김""" if no > 1: move(no - 1, x, 6 - x - y) print(f'원반 [{no}]을(를) {x}..
·CS/알고리즘
참고 문헌https://www.easyspub.co.kr/20_Menu/BookView/381/PUB https://www.easyspub.co.kr/20_Menu/BookView/381/PUB www.easyspub.co.kr 재귀 알고리즘에 대하여어떤 이벤트에서 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의하는 것 예시) 팩토리얼 n!의 정의0! = 1n > 0이면 n! = n × (n - 1)!def factorial(n: int) -> int: if n > 0: return n * factorial(n - 1) else: return 1위 팩토리얼 구현에서 보면, 함수 정의 자체에서 다시 자기 자신을 불러와 함수를 정의하는 것을 확인할 수 있다.cf) 팩..
풀이N, P = map(int, input().split())stack = [[] for _ in range(6 + 1)]count = 0# 이후의 입력for _ in range(N): string, fret = map(int, input().split()) while stack[string] and stack[string][-1] > fret: stack[string].pop() count += 1 if not stack[string] or stack[string][-1]
·BackEnd/Error
venv를 키고 djangorestframework 설치를 하였는데도 아래와 같은 오류가 발생하였다.Import "rest_framework" could not be resolvedPylancereportMissingImports rest_framework를 view.py에서 import할 시에 vscode에서 노란 줄과 함께 글씨 색이 바뀌지 않았다.해결ctrl + shift + pPython: Select InterpreterEnter Interpreter PathFind... 누른 후venv/Scripts/python.exe 선택해결!!
문제N×M크기의 배열로 표현되는 미로가 있다.101111101010101011111011미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.입력첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.출력첫째 줄에 지나야 하는 최소의 칸 ..
문제어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다.입력첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한다)출력첫째 줄에는 그림의 개수, 둘째 줄에는 그 중 가장 넓은 그림의 넓이를 출력하여라. 단, 그림이 하나도..
·CS/자료구조
해시란?데이터를 저장할 인덱스를 간단한 연산을 통해 구하여 데이터의 추가, 검색, 삭제 등이 효율적으로 이루어질 수 있도록 하는 자료구조이다. 예를 들어, [1, 14, 5, 23, 25] 와 같은 데이터와 크기가 7인 해시테이블이 있을 때 다음과 같이 표현할 수 있다.이 때, 해시값은 키를 해시테이블의 크기(7)로 나눈 나머지이다.키11452325해시값10524이런 식으로 key mod 7을 연산하여 해시값을 구할 수 있고, 이렇게 도출된 해시값을 인덱스로 활용하여 해시테이블에 저장할 수 있다. (인덱스는 왼쪽에서부터 순서대로 0, 1, 2, 3, 4, 5, 6)14123 255  해시 충돌(collision)에 대하여그러나 특정 키들에 대한 해시 값이 겹치는 상황이 생길 수 있다.위의 예시에서 8이라..
문제재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다.어떤 지역의 높이 정보는 행과 열의 크기가 각각 N인 2차원 배열 형태로 주어지며 배열의 각 원소는 해당 지점의 높이를 표시하는 자연수이다. 예를 들어, 다음은 N=5인 지역의 높이 정보이다.6826232346673327253689527이제 위와 같은 지역에 많은 비가 내려서 높이가 4 이하인 모든 지점이 물에 잠겼다고 하자. ..
1in
'분류 전체보기' 카테고리의 글 목록