반응형 python16 0-1 BFS에서 visited만 쓰면 틀리는 이유: deque와 거리 갱신 실습 간선 비용이 0 또는 1이면, 먼저 발견한 경로가 항상 최소 비용인 것은 아닙니다. 일반 BFS의 ‘큐에 넣을 때 방문 처리’만 가져오면 나중에 찾은 더 싼 경로를 놓칠 수 있습니다. 0-1 BFS에서는 방문 여부 대신 현재까지의 최소 거리를 비교하고, 비용 0인 이동은 deque 앞에, 비용 1인 이동은 뒤에 넣습니다. 다섯 정점의 작은 그래프로 차이를 확인해 보겠습니다.1. 간선 한 개가 두 개보다 비쌀 수 있습니다다음 방향 그래프에서 출발점은 0입니다. 각 줄에 간선 비용을 적었으며, 반대 방향의 간선은 별도로 주어지지 않았습니다.0 → 1: 비용 10 → 2: 비용 02 → 1: 비용 01 → 3: 비용 1정점 4: 연결된 간선 없음0에서 1로 직접 가면 비용이 1입니다. 하지만 0 → 2 → 1.. 2026. 10. 2. Python pathlib 상대경로 오류 해결: 실행 폴더와 __file__ 기준 분리 파일이 분명히 있는데 Python에서 FileNotFoundError가 난다면, 파일 이름보다 경로의 기준부터 살펴야 합니다. 상대경로로 파일을 열 때의 기준은 보통 소스 파일이 있는 폴더가 아니라 현재 작업 디렉터리입니다. 프로그램에 함께 둔 데이터를 읽으려면 __file__을 기준으로 경로를 만들고, 사용자가 입력한 파일은 실행 위치 기준으로 해석하는 정책이 자연스럽습니다. 두 목적을 구분하면 실행 버튼과 터미널에서 결과가 달라지는 문제를 좁힐 수 있습니다.아래 내용은 Python 3.13의 pathlib와 일반적인 파일시스템에 저장된 .py 스크립트를 기준으로 합니다. 대화형 실행이나 특수한 패키지 로더에는 __file__이 없을 수 있으므로 같은 코드를 그대로 적용하지 않습니다.1. 파일 위치와 .. 2026. 9. 23. Python sorted와 list.sort 차이: 반환값·원본 변경·key 사용·선택 기준 파이썬에서 리스트를 정렬할 때 가장 자주 만나는 두 가지가 sorted()와 list.sort()다. 결과만 보면 둘 다 오름차순으로 정렬하지만, 코드를 작성할 때는 반환값과 원본 변경 여부가 완전히 다르다.먼저 결론부터 정리하면 다음과 같다.구분sorted(iterable)list.sort()반환값정렬된 새 listNone원본 변경변경하지 않음리스트 자체를 변경사용 대상모든 iterablelist만 가능key, reverse지원지원안정 정렬보장보장원본을 보존하면서 정렬 결과가 필요하면 sorted(), 현재 리스트 자체를 정렬하면 list.sort()를 선택하면 된다.sorted는 정렬된 새 리스트를 반환한다sorted()는 입력받은 iterable의 요소를 정렬해 새로운 리스트로 반환한다. 기존 리스.. 2026. 9. 21. Python pathlib의 resolve와 absolute는 무엇이 다를까? Python에서 상대 경로를 절대 경로로 바꾸려고 Path.absolute()와 Path.resolve()를 번갈아 쓰면 결과가 같아 보일 때가 많다. 하지만 두 메서드의 기준은 다르다. absolute()는 경로를 절대 형태로 만들고, resolve()는 심볼릭 링크와 상위 경로까지 실제 파일시스템 기준으로 해석한다.파일이 존재하는지 검사해야 하는지도 선택에 영향을 준다. resolve(strict=True)는 경로가 없으면 예외를 내지만 기본값인 strict=False는 확인할 수 있는 부분까지만 해석한 뒤 나머지를 붙인다.absolute는 절대 경로 형태만 만든다현재 작업 디렉터리를 기준으로 상대 경로를 절대 형태로 바꾸려면 absolute()를 사용할 수 있다.from pathlib import .. 2026. 9. 19. Python datetime에 시간대를 붙이면 시각도 바뀔까? Python의 datetime에 시간대를 붙일 때 시각까지 변환하려면 astimezone()을 사용해야 한다. replace(tzinfo=...)는 벽시계 숫자를 그대로 둔 채 시간대 정보만 붙이므로, 이미 어떤 순간을 나타내는 datetime을 다른 지역 시각으로 바꾸는 용도로 사용하면 결과가 틀어진다.핵심은 먼저 값의 의미를 구분하는 것이다. 시간대가 없는 naive datetime이 서울 현지 시각을 뜻한다면 replace(tzinfo=ZoneInfo("Asia/Seoul"))로 의미를 붙일 수 있다. 이미 UTC를 나타내는 aware datetime을 서울 시각으로 표시하려면 astimezone(ZoneInfo("Asia/Seoul"))으로 변환한다.시간대 정보를 붙이는 경우다음 문자열은 외부 시.. 2026. 9. 18. Python argparse에서 False가 True로 읽히는 이유 명령행 옵션을 type=bool로 선언하면 문자열 "False"도 True로 변환된다. Python의 bool()은 글자의 뜻을 해석하는 함수가 아니라 값이 비어 있는지 등을 기준으로 참·거짓을 판단하기 때문이다. 켜고 끄는 옵션은 store_true나 BooleanOptionalAction으로 표현하고, --enabled false처럼 값을 받는 형식이 꼭 필요할 때만 변환 함수를 만든다.아래 Python 코드 블록은 각각 독립 실행 예제다. 외부 패키지는 필요 없으며, BooleanOptionalAction을 사용하는 예제는 Python 3.9 이상에서 실행한다. parse_args([...])에 명령행 인수를 직접 넣어 결과를 재현한다.type=bool이 실제로 하는 일첫 예제는 잘못된 선택이 어떤.. 2026. 9. 15. 이전 1 2 3 다음 반응형