목록코테 (56)
우당탕탕 개발일지
트리 순회트리 순회 안한지 너무 오래 되어서 까먹어서 좀 찾아봤다...!전위순회: 루트 -> 완쪽 -> 오른쪽중위순회: 왼쪽 -> 루트 -> 오른쪽후위순회: 왼쪽 -> 오른쪽 -> 루트 풀이이걸 바탕으로 재귀함수로 구현하려고 한다. 트리구조는 노드가 있어야 하기 때문에 노드 클래스를 만들었다. 입력 데이터를 root, left, right에 저장했다.해당 Node 객체를 트리에 저장한다. 나중에 트리에서 빼기 쉽게 사용하도록 딕셔너리 형태를 사용했다.q 최종 코드class Node: def __init__(self, data): self.root = data.split()[0] self.left = data.split()[1] self.right= data.s..

풀이 최종 코드import queuedef findSheep(x, y): sheepQueue = queue.Queue() sheepCheck[x][y] = True sheepQueue.put([x, y]) # 앞뒤위아래 moveXArr = [1, -1, 0, 0] moveYArr = [0, 0, -1, 1] while sheepQueue.qsize() > 0: node = sheepQueue.get() for i in range(len(moveXArr)): moveX = node[0] + moveXArr[i] moveY = node[1] + moveYArr[i] ..

풀이1번 컴퓨터와 연결되어 있는 모든 컴퓨터의 개수를 찾으면 된다. 연결되어 있는 모든 노드를 구하기 때문에 BFS와 DFS 둘 다 상관없다고 판단했다. 입력값 초기화 num: 컴퓨터 개수networkCount: 네트워크 상에 연결된 컴퓨터 쌍의 수 networkInfo: 연결되어 있는 다른 컴퓨터의 번호 저장* networkInfo[n]에 n과 연결된 컴퓨터 번호가 저장되어 있다networkCheck: 각 컴퓨터를 확인했는지 여부 저장 값 networkCount 만큼 데이터를 입력받아 networkInfo에 각 컴퓨터 번호와 연결되어 있는 다른 컴퓨터 번호를 저장한다.편의성을 위해 num+1만큼의 크기를 잡고 0번째 원소는 사용하지 않는다.1번 컴퓨터와 연결된 컴퓨터 수를 구하기 때문에 무조건 ..

풀이처음에 입력값의 의미를 이해하지 못했다....다른 블로그랑 GPT한테 물어보고 이해했다.... ㅎ테스트 케이스 개수가 주어지는 것이 아니라 w,h와 지도정보를 계속 제공하다가 0 0를 만나면 프로그램 종료인 것이었다..! Queue를 활용하여 BFS로 풀었다. 현재 노드와 근접한 노드먼저 확인하는 것이 좋다고 판단했기 때문이었다. 메인0 0을 만나면 프로그램 종료이기 때문에 while문으로 반복하다가 0 0일 경우 빠져나가도록 구현했다. 주어진 땅, 바다 정보 저장 후, 배열을 돌면서 미방문이면서 땅인 노드에서 findLand(x, y) 함수를 호출했다. findLand(x, y) 함수해당 함수에서는 매개변수로 주어진 x,y 노드를 기준으로 8방향의 노드를 확인한다. 위에서 언급했다 싶이 BFS로..

풀이사실 문제를 이해 못해서 다른 블로그를 엄청 많이 봤다...!예시1번에서 내가 생각한 정답은 '1 1 4 4 6 3' 이었는데 왜 '4 6 1 3 1 4'인지 이해가 안되서 한참 보았다. 블로그를 통해 문제를 이해하고 다시 문제를 보니 내가 놓친 부분이 보였다.각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력노드 번호가 2번인 부모 노드부터 n번인 부모 노드 번호까지 출력하라는 의미인게 이제서야 보였다... ㅎ 먼저 제시된 예시1 트리를 표현했다1. 각 노드와 연결된 노드를 저장2. 연결되어 있는 노드를 방문하면서 각 부모 노드를 저장하면된다.각 노드와 연결된 노드각 노드의 부모 노드노드, 1: 4, 6노드, 2: 4, 7노드, 3: 5, 6노드, 4: 1, 2, 7노드, 5: 3노드, 6..

풀이* 각 시도 모두 메인 부분은 동일하고 'findEarthworm()' 함수 부분만 변경함. 1차 시도1이 연결되어 있는 노드 끝까지 탐색 후, 옆 노드로 이동해서 끝까지 탐색함으로 깊이우선탐색알고리즘이라고 판단그래서 스택과 재귀를 활용하여 구현해야 겠다고 생각해서 아래와 같이 구현 현재 노드 기준으로 연결된 노드가 1이고 아직 방문하지 않았다면 해당 함수 재귀로 호출함수 호출되면 스택에 현재 노드 저장 후, while에서 하나 빼서 사용def findEarthworm(startY, startX): checkArr[startY][startX] = True nearNode.append([startY, startX]) # 앞뒤위아래 moveXArr = [1, -1, 0, 0]..

풀이1차 시도: 시간 초과아... 너무 단순하게 생각했다.... ㅎ그냥 무작정 범위 값을 더했다...! 하지만 시간 초과... 여기저기 찾아보니까 DP를 사용하여야 한다구 한다.def peopleCount() : str = input() x1 = int(str.split(" ")[0]) - 1 y1 = int(str.split(" ")[1]) - 1 x2 = int(str.split(" ")[2]) - 1 y2 = int(str.split(" ")[3]) - 1 re = 0 for i in range(n): if i x2: continue for j in range(m): if j y2..

문제안전 지역은 잠겨있지 않은 지역의 덩어리임! 높이 = 4 >> 안전 지역 = 5높이 = 6 >> 안전 지역 = 4 안전역영의 최대 개 : 5 풀이2667번 문제에서 약간 조건이 추가된 문제였다. 덕분에 그때 코드 생각해보면서 문제를 풀어봤다. 1. 입력값 받기 & 최대 높이 구하기입력값을 받으면서 변수 m에 최대 값을 저장했다.비의 양에 대한 조건이 없었고 최대 높이 이상으로 오는건 다 동일한 값이기 때문...! m를 가지고 강수량별 안전 영역 수를 구한다. 2. 강수량별 안전 영역 개수 확인비가 안 오는 경우도 생각하여 높이는 0부터 m까지 반복문 실행함. 2-1. 변수 설정아래 변수들은 강수량별로 다른 정보를 가지고 있기에 해당 반복문에 변수를 선언 및 초기화를 진행했다.count >> 현..