Loading...
2023. 8. 25. 00:57

정육면체가 쌓인 3차원 도형의 겉넓이를 구하는 방법

1. 문제 16931번: 겉넓이 구하기 (acmicpc.net) 16931번: 겉넓이 구하기 크기가 N×M인 종이가 있고, 종이는 1×1크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에 1×1×1 크기의 정육면체를 놓아 3차원 도형을 만들었다. 종이의 각 칸에 놓인 정육면체의 개수가 주어 www.acmicpc.net 2. 풀이 위,아래, 앞,뒤,왼쪽,오른쪽에서 보이는 면의 개수를 전부 더하면 될 것이며 면의 개수는 어떻게 구하지? n*m 크기의 바닥 아래에 정육면체를 쌓았을때, 위나 아래에서 봤을때는? 당연히 n*m개씩 보일 것이다. 왼쪽과 오른쪽에서 봤을때는? 위 그림이 1 3 4 2 2 3 1 2 4 와 같이 주어지는데, 왼쪽에서 본다면, 1 3 4 >>>>>> 2 2 3 1 2 4 처럼 상상해본..

2022. 9. 30. 17:00

트리 응용 알고리즘 몇가지 - 자손, 루트, 조상찾기, 서브트리 부분순회 -

1. 완전이진트리 기본 순회 3가지 다음과 같은 완전이진트리에서 전위순회, 중위순회, 후위순회를 구해본다면..? ##노드 번호로 순회함수 정의 ##완전이진트리의 왼쪽 자식은 2*v ##오른쪽 자식은 2*v+1 ##전위순회 def preorder(v): if v

2022. 9. 15. 11:38

트리 이론 기본편 -중위 순회의 특징 응용하기-

1. 이진 탐색 트리의 특징 이진 탐색 트리는 어떠한 경우에도 왼쪽 서브 트리의 루트 루트 > 오른쪽 서브트리 순서대로 순회를 하게 된다. 그렇다면 주어진 이진 트리의 노드를 중위순회한다면, 트리에 넣어야할 데이터의 순서가 주어지며 그러한 순서대로 데이터를 작은 값부터 넣으면 "왼쪽 서브 트리의 루트 2 > 3 > 4 > 5 > ..

2022. 9. 13. 06:46

트리 이론 기본편4 -이진 탐색 트리 + heap(힙) 간단하게-

1. 수식 트리(expression binary tree) 수식을 표현하는 이진 트리 수식 이진 트리라고도 부른다 연산자는 루트 노드이거나 가지 노드 루트와 잎 사이의 중간 노드들을 가지 노드라고 하나봐 피연산자는 모두 잎 노드에 존재함 전위, 중위, 후위순회를 이용해서 순회하면 수식의 전위표기법, 중위표기법, 후위표기법이 된다 2. 예시 다음과 같은 트리를 전위, 중위, 후위순회 해서 전위표기법, 중위표기법, 후위표기법을 구해보면? 2-1) 구현 예시 #class 정의 class Node: def __init__(self,data): self.data = data self.left = None self.right = None #tree 정의 root = Node('+') root.left = Node(..

2022. 9. 11. 17:57

알고리즘 문제를 풀기위해 2차원 배열에서 이해해야할 테크닉들

1. 2차원 배열 선언 1-1) 일반적으로 [ [0,1,2,3], [1,2,3,4] ] 과 같이 [0,1,2,3], [1,2,3,4]는 각각 행을 나타내고 (0,1), (1,2), (2,3), (3,4)는 각각 열을 나타냄 세로의 길이(행의 개수), 가로의 길이(열의 개수)를 필요로 한다 1-2) 입력을 받을때 1 2 3 4 5 6 7 8 9 는 '1 2 3'을 리스트로 바꿀려면, input().split() 123 456 789 는 '123'을 리스트로 바꿀려면 list(input()) 2. 2차원 배열 순회하기 2-1) 행 우선 순회 2차원 배열 각 칸의 좌표를 (x,y)라고 하면, arr[y][x]로 접근할 수 있다 n*m 배열에서 for y in range(n): for x in range(m):..

2022. 7. 25. 02:10

enumerate의 숨겨진 비밀

enumerate가 index와 원소를 동시에 열거해서 (ind,원소)로 순회할 수 있다는거 기본인데 for ind, e in enumerate(int_list): print(ind) print(e) 하지만 때로는 index가 1부터 시작하고 싶을 때가 있다. 이럴때 for ind,e in enumerate(int_list): ind += 1 print(ind) print(e) 이러지말고 enumerate(int_list,start = 1)로 start 옵션에 시작하고 싶은 값을 주면 된다 예시 코드) members = ['민수', '영희', '철수'] for idx, member in enumerate(members, start=1): print(idx, member) 1 민수 2 영희 3 철수