N = int(input()) words = [ input() for _ in range(N) ] ans = 0 for word in words: prev = word[0] before = [] isGroup = True for i in range(len(word)): if word[i] != prev: before.append(prev) if word[i] in before: isGroup = False break if isGroup: print(word) ans += 1 print(ans 이게 수업으로 제공하셨던 정답 코드인데, 오답 코드가 아닌가 해서 여쭤봅니다. prev 변수가 갱신이 되지않고 계속해서 그룹여부를 체크하는데, 이 부분이 잘못 된 것이 아닌가 싶습니다. 예를 들어 abcb라는 문자열의 경우에서도 그룹단어가 아니어야하는데 그룹단어로 검출되는 로직인 것 같습니다. 제가 그룹단어에 대해 잘못 이해한 걸까요?
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 . 트리의 특성 상, Insert 내의 While() 1번은 사실 상 2^n개의 데이터를 순회하는 효과니까 데이터가 정말 많아도 100번 이하로 돌 것 같습니다. 2. 대입문 1개는 지우는건 어셈블리 1줄을 지우는 거니까, 100줄 정도의 어셈이 사라지는 것인데, 이게 큰 성능향상인지 궁금합니다!
메모리 풀링은 그렇다면 주로 어느정도의 사이즈를 가정할 수 있을때나 시스템상 핸들링 할 수 있는 최대치를 넣어 구현한다는 말씀이신가요?그렇다면 내부적으로 너무 많은 메모리를 사용하지않고 낭비되어 효율성이 떨어지지 않나요? 어느 시점에 써야 하는지에 대한 부분이 좀 명확하지않아, 어떤 상황에 써야 되는 기법인지 묻고 싶습니다. 2번째는 현 tail 노드를 추가하는 부분에 있어서 .... 왜 마지막 노드의 next가 NULL인것에서 문제가 생기는 지 이해가 잘 되지 않습니다.for문이나 while문으로 loop하여 display하는것으로 가정했을때 마지막 노드 next가 0이게 되면 더이상 반복문이 실행되지않고 끝나게 되면서, NULL이 프린트 되지않고 나오지않나요?예시로 for문 중간에 왜 아무것도 기입하지 않는 부분도 어떻게 컴파일은 진행이되고 세크먼트로폴트 결과가 나오는걸까요? 혹시 선생님 말씀은 null로 마지막 node가 설정되지 않은 쓰레기값이 설정되었을때를 방지하기위해 tail노드를 추가적으로 안전하게 설치하자는 말씀이실까요?
안녕하세요. 좋은 강의 정말 감사드립니다 😋 강의에서 분석하는 커널 버전이 3.10.X(on Jul 1, 2013( https://github.com/torvalds/linux/releases/tag/v3.10 )) 으로 한 이유가 있으신지 궁금합니다. 최신 버전은 6.9.X 과는 시간 간극이 꽤 큰 것 같습니다. 강의 17:00 에서의 리눅스 소스코드 버전을 보면 3.10.X( https://github.com/torvalds/linux/blob/v3.10/lib/sort.c ) 에서의 generic_swap 함수를 띄어왔지만, 최신 버전(6.9.X - https://github.com/torvalds/linux/blob/v6.9/lib/sort.c ) 에서는 generic_swap 함수를 찾을 수 없습니다. 물론, 코드를 읽어보면 강사님이 해주신 내용으로 충분히 이해가 가능합니다. 핵심 아이디어는 동일하다는 것이겠지만, 조금씩 다른 부분, 그리고 시간이 더해지면서 발전한 코드가 있을 것 같아, 질문으로 남깁니다