728x90

프로그래밍 47

[Linux] NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running 에러 해결

연구실 정전때문에 서버가 종종 다운되는데, 그때마다 꼭 NAS나 nvidia 드라이버가 문제가 생기는 경우가 발생해 정리해놓는 글. 실행 환경 ubuntu 20.04, RTX 4090 오류 발생 원인 해당 에러는 nvidia 드라이버를 사용하는 딥러닝 프로세스를 종료하지 않은 채로 서버의 전원이 꺼지거나 시스템 종료하는 경우에 많이 발생한다고 한다. 실제로 이번 오류도 연구실 정전때문에 갑자기 서버가 다 셧다운된 후에 발생한 에러. 해결 방법 심플하게 드라이버를 삭제했다가 재설치하면 된다. 이전 버전의 드라이버를 확실히 지우기 위해 아래와 같이 명령어를 수행한다. purge 옵션을 지정해주지 않으면 A 패키지의 설정 값이 삭제가 안된다고 함. autoremove를 통해 패키지 간 dependency로 인..

[matplotlib] plot 글씨체 변경 및 글씨 선명하게 하기

plot에 나오는 글씨체를 Times New Roman으로 변경하는 방법 plt.rcParams['font.family'] = 'Times New Roman' Times New Roman 이외에도 기본 폰트의 경우에는 별도 폰트 파일 다운로드 받을 필요 없이 위와 같이 해결이 될 것. 글씨 선명하게 하기 jupyter 기본 plot의 경우에는 plot 내부의 글씨가 조금 흐린 경우가 있음. 따라서, 아래와 같이 config를 설정해주면 글씨를 선명히 할 수 있음. %config InlineBackend.figure_format = 'retina'

[Python] 프로그래머스 - 하노이의 탑

문제 설명 https://programmers.co.kr/learn/courses/30/lessons/12946 코딩테스트 연습 - 하노이의 탑 하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대 programmers.co.kr n개의 원판을 i번째 기둥에서 j번째 기둥까지 옮기는 방법을 구하는 문제이다. 위의 프로그래머스 문제에서는 n개의 원판을 첫번째 기둥에서 세번째 기둥으로 옮기는 방법을 구하는 문제로 출제되었음. 하노이의 탑은 재귀로 풀이 가능한 전형적인 문제. 문제 접근 처음에 패턴을 파악해서 재귀로 연관지을 수 있는지가 포인트. 또한, 어디로..

[Python] 프로그래머스 - 대중소 괄호 짝 맞추기

문제 설명 여섯 가지 괄호 '(', ')', '{', '}', '[', ']'로 이루어진 문자열이 바르게 닫힌 문자열인지 체크. 바르게 닫힌 문자열이란 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로, '[' 문자로 열렸으면 ']' 문자로, '{' 문자로 열렸으면 '}' 문자로 닫히는 문자열을 의미함. - 제대로 닫히지 않은 문자열 예시: ((]], ([)] - 제대로 닫힌 문자열 예시: [[(())]]{} 문자열 s가 주어졌을 때, 문자열 s가 바르게 닫힌 문자열일 경우 True를 그렇지 않으면 False를 리턴하는 코드를 작성할 것. 단, 문자열 s의 길이는 1 이상 40이하이며 문자열 s는 위의 6개 괄호 문자로만 이루어짐. 문제 접근 전형적인 스택 풀이 문제이다. 문자열 s를 처음부터 훑으면..

[Python] 프로그래머스 - 2xn 타일링

문제 https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 programmers.co.kr 문제 요구 조건 가로 길이가 n으로 주어지고, 세로 길이는 2로 고정되어 있다. 세로를 2로 고정하기 때문에 고려할 사항은 가로 길이뿐이다. 따라서 가로 n을 어떻게 채울 것인가에 대해 생각하면 된다. 그렇게 되면 두 가지 선택지가 있다. 직사각형 모양 타일을 세로로 쌓거나 혹은 가로로 쌓거나이다. 즉, 1과 2를 사용해서 n을 잘 채우면 된다..

[Python] 클래스 선언 시 object 상속을 하는 이유

파이토치 learning rate scheduler 소스 코드를 뜯어보다가 베이스 클래스인 _LRScheduler가 object를 상속받는 것을 알 수 있었다. 클래스 __init__과정에서 super().__init__()도 수행하지 않는데, 즉 어떤 속성도 상속받지 않는데 대체 그럼 object를 상속받는 건 무슨 역할을 하는 것일까 하는 궁금증에 찾아본 내용을 정리한다. old-style class vs. new-style class [문제의 코드] class _LRScheduler(object): def __init__(self, optimizer, last_epoch=-1, verbose=False): # Attach optimizer if not isinstance(optimizer, Opti..

[Python] 프로그래머스 - 네트워크

문제 https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 문제 요구 조건 그래프의 연결성분 찾기 문제 요건 분석 그래프의 경우 무향 그래프임. 입력으로 주어지는 그래프가 인접행렬로 구현되어 있기 때문에, 인접리스트로 구현할 시 (defaultdict에 넣어주는 형태로) 무향 그래프임에도 불구하고 노드를 뒤바꿔 추가해주는 작업을 하지 않아도 됨. 그래프 탐색이기 때문에 dfs를 통해 구현함. 연결성분의 개수를..

[Python] 프로그래머스 - 빙고 (feat. set의 시간 복잡도)

문제 설명 N*N 숫자 입력과 지운 숫자가 들어가있는 nums 배열이 있다고 했을 때 총 몇 개의 빙고가 발생(?)하는지를 리턴하는 문제 나의 풀이 시간 초과 발생. def solution(board, nums): answer = 0 n = len(board) for row in range(n): for col in range(n): if board[row][col] in nums: board[row][col] = 0 # 오른쪽으로 이동 (horizontal 빙고) for i in range(n): for j in range(n-1): if board[i][j] != board[i][j+1]: break else: answer += 1 # 아래로 이동 (vertical 빙고) for i in range(..

[Docker/python] 도커 내에서 파이썬 버전 업그레이드

도커 이미지 내의 파이썬과 실제 프로젝트에 필요한 파이썬의 버전이 다를 수 있다. 이 경우에 파이썬의 버전을 업그레이드하는 방법을 정리해보고자 한다. 아래 서술할 내용은 파이썬의 버전 업그레이드보다는 여러 개의 버전을 한꺼번에 관리하는 것에 더 가깝다. 정리하자면, 파이썬 상위 버전을 설치한 후 python 커맨드를 날렸을 때 어떤 버전의 파이썬을 실행할 것인지를 상위버전으로 설정해주면 된다. 파이썬 상위버전 설치 참고로 bash 명령어는 root 사용자일 때는 sudo를 사용하지 않는다. 아래는 root 계정이 아님을 가정하고 명령어를 작성하였다. sudo apt update sudo apt install python3.7이렇게 설치를 한 후에 python --version으로 python 버전을 확인..

[python] install error (disutil 관련)

ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. pip -r requirements.txt를 수행하다가 맞닥뜨린 에러. 기존의 패키지를 uninstall하고 다시 새로운 버전을 설치하는 과정에서 어떤 파일을 지워야할지 결정할 수 없기 때문에 발생하는 installation 에러이다. 나같은 경우엔 PyYAML과 Cython 등을 설치하면서 발생했다. 기존 설치되어있던 라이브러리가 있다면 충돌하면서 발생할 확률이 높다 (나같은 경우엔 ..

728x90