import sys sys.setrecursionlimit(10000) input = sys.stdin.readline N = int(input().rstrip()) graph = [list(map(int, input().rstrip())) for _ in range(N)] dy = [-1, 1, 0, 0] dx = [0, 0, -1, 1] visited = [ [False] * N for _ in range(N) ] distances = [] def dfs(y, x): stack = [(y, x)] distance = 1 while stack: cy, cx = stack.pop() for i in range(4): ny = cy + dy[i] nx = cx + dx[i] if 0 <= ny < N and 0 <= nx < N: if graph[ny][nx] == 1 and not visited[ny][nx]: visited[ny][nx] = True stack.append((ny, nx)) distance += dfs(ny, nx) return distance for i in range(N): for j in range(N): if graph[i][j] == 1 and not visited[i][j]: distances.append(dfs(i, j) - 1) print(len(distances)) for d in sorted(distances): print(d) 이렇게 제가 풀어봤는데요, 예시 입출력은 잘 나오는데 백준에 제출하면 틀렸다고 나오네요. 어느 부분에서 반례가 있는 것일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 궁금증이 생겨 질문을 남깁니다. 노드와 연결1 노드를 배우면서 스트링 빌더의 append메서드가 생각이 났습니다. 그래서 중급1편에 배운 append메서드에 대해서 찾아보고 작동 방법에 대해서 찾아보고 자기 자신을 참조해서 스트링 빌더가 돌아가는것을 확인을 할수가 있었습니다. 이런 것 을 보고 노드가 '스트링 빌더 에서 파생된 작품?(응용) 아닌가' 라는 생각이 듭니다. 그래서 여기서 질문이 첫 번째 노드가, 스트링 빌더나, 메서드 체인닝 기법에서 파생된 작품인가요? 두 번째 스트링 빌더의 apeend의 this와, node의 new의 차이점이라고 할까요? 이런 것이 어떻게 다른지 비교해서 가르켜 주시면 안될까요? 뭔가 대조 되는 게 있는 것 같아서, 혹 이 두가지 가 대조가 가능하다면 대조 설명을 해주시면 감사하겠습니다. 추가1 다음 강의 에서 toString할때 스트링 빌더 및 append메서드가 나와서.. 좀 당황스럽기는 한데. 이거 때문에. 생각 난 것은 아닙니다. 중급1편에서 스트링 빌더를 공부할 때 sb.append(내용).append(내용).append(내용); first.next.next = new Node("C"); 이거랑 비슷해서 생각이 난거 입니다. 그래서 중급1편의 코딩 내용들을 뒤져본거고, pdf도 뒤져봤습니다. 증거 사진 이요.. 답변 부탁 드립니다.
s = list(input()) n = len(s) choose = [] check = [False] * len(s) ans = [] def check_ad(s): for i in range(len(s)-1): if s[i] == s[i+1]: return False return True def make(level): if level == n and check_ad(choose): result = ''.join(choose) if result not in ans: ans.append(result) for i in range(n): if check[i]: continue choose.append(s[i]) check[i] = True make(level + 1) choose.pop() check[i] = False make(0) print(len(ans)) 안녕하세요 강사님! 위 코드는 시간 초과가 나는데 순열 강의 알고리즘을 그대로 사용한 것입니다! 강사님의 순열 코드는 시간 초과가 안나는데 왜 이거는 시간초과가 날까요? 내장된 permutation이 효율적으로 구현된 것일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 강의를 들으면서 궁금증이 생겨서 질문을 남깁니다. grow 라는 메서드를 통해서 동적 배열의 사용법을 잘보았습니다. 전에 강의에서(어떤 강의인지는 기억 안남.) 영한님이 10억 이라는 숫자를 말씀 하신 걸로 기억을 합니다. 이 10억 이라는 숫자 때문에 질문이 생깁니다. 어떤 배열에 데이터를 넣다 보니 , 최대 데이터 용량이 18억건의 데이터를 넣을수 있게되었습니다. 그런데 어찌저찌 하다 보니 그 데이터 배열이 꽉 차서 50%를 배열의 길이 늘린다고 가정 했을 때, 대략 (18+9 = 27) 27억 이라는 배열의 길이가 나옵니다. 근데 여기에서 int형 범위 가 생각납니다. 검색해보니 약 22억 '+,-' 이더 라고요. 이런 경우에는 어떻게 처리를 하나요?, 아니면 이런 경우는 아에 없고, 데이터의 크기가 너무 크니, 어떠한 숫자의 상한선이 되면, 다른 객체 배열을 만드나요? (2번째 경우는 글 쓰면서 생각이 나네요) 답변 부탁 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 영한님이 만드신 배열리스트에서 set에서 궁금증이 생겨서 질문을 남깁니다. set메서드에서 예전값 을 유지시키기 위하여 get메서드를 사용하여서 값을 반환 하는것을 보았습니다. 근데 공부하면서 떠오르는 방법이 사진 처럼 해보았고, 결과 값은 똑같이 나오더라고요. 이렇게 하신 이유가 있으실까요? 답변 부탁 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. dogHospital.set(dog); Dog bigger = dogHospital.bigger(new Dog("멍멍2", 200)); System.out.println("bigger ->" + bigger); 여기서 출력이 왜 Animal{name = '', size =''} 로 되는 건가요? bigger()에서 return을 했을때 toString()으로 한게 아닌데 저렇게 출력 됐는지를 모르겠습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 질문이 생겨서 질문을 남깁니다. 배열의 특징2 - 데이터 추가에서 첫 번째, index 번째, 마지막 번째, 에 추가 하는 것의 방법은 들으니까 이해가 됩니다. 여기서 질문이 생깁니다. 듣기는 들었고, 따라 치기도 하고, 이해는 되고 그러는데. 뭔가 석연치 않는 부분이 있습니다.( 뭔가 애매하다고 해야 할끼요?) 그것 때문에 어떻게 해야 할지 모르 겟네요. 이럴 때는 어떻게 해야 하나요? 석연치 않은 부분이 풀릴 때 까지 계속 반복해서 듣고, 코드를 지웠다 치고 그러는게 좋을까요? 아니면 다른 방법이 있을까요? 답변 부탁 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 남깁니다. 배열로 데이터를 첫 번째 위치에 추가, n 번째 위치에 추가, 마지막 위치에 추가 하는것 을 잘 보았습니다. 근데 강의를 들으면서 객체 배열(ex: Integer)이면 어떻게 해야하지 라느 생각을 하게 되었습니다. 30개 제한이 있는 객체 배열이 있고 값이 20개(0~19) 까지만 담아져 있고, 나머지 값(19~29번째 )은 'null' 이라고 한다면, 마지막의 값(21번째에 넣겟다는 뜻입니다.)은 어떻게 넣지? 라는 생각을 하게 되었습니다. 이런 경우 어떻게 해야 하나요? 혹 나중 강의에 이런 내용 같은 게 나오나요?(그러면 강의를 통해서 배우면 되니까 안 알켜주셔도 됩니다.) 답변 부탁 드립니다.
HashTable클래스내 get함수에 C++로 학습하고 있는데.. currentNode는 HashData*의 정보를 가져와서 currentNode를 구현한 것인가요? 아니면 int 로 그냥 들어간건가요? 만약 int 이면 DoublyLinkedList에 존재하는 data를 int currentNode = arr[this->hashFunction(key)].head->data; 이렇게 넘겨줘야하는데. 만약 int형이 아니면... while문에 들어간 currentNode.data .value는 어디서 나온건지 모르겠네요. . DoublyLinkedList를 혹시 수정을 하신건지..흠.. let이 그냥 자동으로 얘 이런거니까 자료형 알아서 만들어 느낌같은데.. 너무.. 헷갈리네요..
Q1) 2, 3, ..., N차원 맨해튼 거리에서 각 차원은 서로 독립적인게 맞나요? ex) 2차원인 x, y에서 x의 맨해튼 거리의 최소값과 y축 거리의 최소값은 서로 독립적이라 전체 최소값은 결국 x 맨해튼 거리 최솟값인 x좌표, y 맨해튼 거리가 최솟값인 y 좌표 Q2) N+1개 이상의 N차원 맨해튼 거리의 최솟값은 항상 주어진 점 위에 존재하게 되는건가요? ex) 점이 3개 혹은 4개가 주어진 2차원 맨해튼 거리 최소값은 무조건 주어진 점 위에 있는것인지?
안녕하세요, 강의를 듣고 계신 여러분! 여러분의 학습을 돕기 위해 질문 안내를 드리고자 합니다. 1. chatGPT를 이용해보기 단순한 의문은 chatGPT를 이용해도 해답을 찾을 수 있는 경우가 종종 있습니다! gpt에선 이러한 코드가 정상적이지 않은 코드라고 합니다.아래는 계속 되는 질문을 통해 얻어낸 답입니다. 2. 강의의 어떤 부분에 대한 질문이고, 어떤 부분이 궁금한지 명확히 알려주세요! 섹션2 첫강의 N = int(input()) result = 0 for i in range(1, N + 1): result += i print(result) input()함수처리 이해가안됩니다 txt 파일에서 1 과 3을 입력해 int()로 형변환이되면 정수 하나만 처리되는게 아닌지요? 파이참에선 입력이 1로 처리되는걸로봐선 1과 3 문자열로 처리되고 앞의 정수 1만 값을 인지하여 N = 1이 되는거 같습니다. 파이참과 강의에서 사용하는 애디터의 코드 가 다른 부분이 다른 강의에서도 많을까요?? input.txt에서1 3은 Sublime Text 3 어떻게 처리가되는걸까요 ? 1은 입력이된고고 3, 10,100,1000등만 입력되는거네요…!?
안녕하세요, 강의를 듣고 계신 여러분! 여러분의 학습을 돕기 위해 질문 안내를 드리고자 합니다. 1. chatGPT를 이용해보기 단순한 의문은 chatGPT를 이용해도 해답을 찾을 수 있는 경우가 종종 있습니다! 2. 강의의 어떤 부분에 대한 질문이고, 어떤 부분이 궁금한지 명확히 알려주세요! 강의의 어느 파트에서 의문을 느끼고, 어떤 부분이 궁금한지 를 명확히 제시해 주시면 답변에 도움이 됩니다! 자신은 어떻게 이해했는지 또한 적어주면 좋습니다! ex) 섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의 에서 DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해 했습니다. 그러면 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요? 어느 파트 섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의 자신은 어떻게 이해했는지 DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해 어떤 부분이 궁금한지 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요?
안녕하세요 강사님, 재귀함수 이해하기[문제풀이]: BOJ 10870 문제 풀이에서 궁금한 점이 있어 질문드립니다. 아래는 제 코드입니다. 백준 제출시 런타임 에러가 발생합니다. 시간 복잡도는 O(n)이 나와서 문제가 없는 듯한데, 재귀 호출이 너무 깊어져서 발생하는 문제인지, 궁금하여 여쭤봅니다. 감사합니다. import sys input1 = int(sys.stdin.readline()) def fibo(n, n_1, n_2): if n == 1: return n_1 else: return fibo(n-1, n_1+n_2, n_1) result = fibo(input1, 1, 0) print(result)