gh-pages -d build 명령어를 통해 GitHub Pages로 프로젝트를 배포하던 중, 깃허브 계정의 비밀번호를 잘못 입력하여 작업이 중단되었다. 이후 다시 gh-pages -d build 명령어를 실행해보았지만 다음과 같은 에러가 발생했다.fatal: a branch named 'gh-pages' already exists 시도한 방법gh-pages 브랜치 삭제로컬 및 원격 저장소에서 gh-pages 브랜치를 삭제했지만 오히려 삭제할 브랜치가 없다는 것만 확인하고 동일한 에러가 발생했다.Docker 컨테이너 삭제 및 재빌드프로젝트 환경을 초기화하기 위해 실행 중이던 Docker 컨테이너를 삭제하고 재빌드했지만 문제는 해결되지 않았다.문제의 원인에러 메시지와 실행 로그를 분석한 결과, node_..
테스트 코드를 작성할 때 BaseTestCase 클래스를 별도로 작성하면 테스트 코드를 더 간편하게 관리할 수 있다. 예를 들어, setUp 메서드를 통해 초기 데이터를 생성하고, 여러 테스트에서 별도의 추가 작성 없이 재사용하는 것이다. 하지만 SimpleUploadedFile 사용한다면 이미지 포스팅 테스트를 작성할 때 다음과 같은 문제가 발생할 수 있다.BaseTestCase 클래스에서 setUp 메서드를 통해 이미지와 함께 게시글(Post)을 생성하고, 이를 PostTest 클래스의 테스트 메서드에서 재사용하려고 할 때, 새로운 포스팅 요청이 실패하며 에러가 발생한다.# response.data {'image': [ErrorDetail(string='제출한 파일이 비어있습니다.', code='em..
Django에서 기본적으로 제공하는 User 모델을 사용할 수 있지만, 프로젝트 요구사항에 따라 사용자 모델을 직접 커스터마이징해야 할 때가 있다.Django에서는 AbstractUser와 AbstractBaseUser라는 두 가지 추상 클래스를 통해 사용자 모델을 커스터마이징할 수 있다. AbstractUser는 기본적으로 제공되는 필드를 유지하면서 필요한 필드를 추가할 때 사용 가능하고,AbstractBaseUser는 사용자 모델을 완전히 새로 정의할 때 사용 가능하다.이 두 가지 클래스는 구체적으로 어떤 필드와 동작을 제공하는지 살펴보자. 사전 설정먼저 AbstractUser 나 AbstractBaseUser 클래스를 상속받아 생성한다면 settings.py를 변경해주어야 한다.# projectn..
문제N개의 작업이 주어졌을 때, 각 작업의 마감시간(S)과 소요시간(T)을 고려해 모든 작업을 마감시간 내 완료하면서 가장 늦게 일을 시작할 수 있는 시간을 찾는 문제이다.작업은 동시에 할 수 없으며 일을 시작할 수 있는 시간은 0부터이다.풀이제일 마지막 마감시간을 기준으로 뒤에서부터 작업을 배치하면서, 가능한 가장 늦은 시작 시간을 계산한다.먼저 마감시간을 기준으로 데이터를 정렬한다.임의로 시작시간을 무한으로 설정한다.가장 마감시간이 늦은 작업부터 차례대로 확인한다.만약 시작시간보다 다음 작업의 마감시간이 작다면, 마감시간으로부터 소요시간을 뺀 값을 다음 시작시간으로 둔다.만약 시작시간보다 다음 작업의 마감시간이 크다면, 시작시간을 기준으로 소요시간을 뺀 값을 다음 시작시간으로 설정한다.최종적으로 시작..
문제3x3 퍼즐판이 주어졌을 때, 퍼즐판의 알파벳을 사용하여 만들 수 있는 단어의 수를 알파벳별로 계산하고, 단어 수의 최솟값과 최댓값에 해당하는 알파벳을 출력하는 문제이다.풀이퍼즐의 알파벳들과 각 단어의 알파벳들의 비교하여 만들 수 있는 단어인지 파악하고, 퍼즐의 각 알파벳이 총 몇 개의 단어를 만드는데 사용될 수 있는지 세면 최솟값과 최댓값을 구할 수 있다.먼저 단어 사전의 단어들의 알파벳 빈도 딕셔너리로 변환하여 저장한다. (중복 값이 있을 수 있음을 고려) 퍼즐 정보를 하나씩 받으면서 퍼즐의 알파벳 빈도 딕셔너리를 생성한다.단어 사전의 단어들과 퍼즐을 비교하여 퍼즐을 통해 만들 수 있는 단어인지 확인한다.퍼즐 알파벳의 빈도가 단어 알파벳의 빈도보다 작으면 만들 수 없는 단어이다.만들 수 있는 단어..
문제1부터 N까지의 정수로 이루어진 순열을 오름차순으로 정렬할 때, 최소 몇 번의 뒤집기를 해야 하는지 구하는 문제이다.정렬은 특정 위치 iii에서 시작하여 오른쪽으로 K개의 숫자를 뒤집는 연산을 반복하는 방식으로 이루어진다. 예를 들어 N이 5, K가 3일 때, (5, 4, 3, 2, 1) 순열이 주어진 경우i=0에서 뒤집으면 (3, 4, 5, 2, 1) 이 된다.i=1에서 뒤집으면 (3, 2, 5, 4, 1) 이 된다.i=2에서 뒤집으면 (3, 2, 1, 4, 5) 이 된다.i=0에서 뒤집으면 (1, 2, 3, 4, 5) 이 되면서 정렬이 완료된다.최소 4번의 뒤집기로 오름차순 순열을 만들 수 있다.풀이이 문제는 각 순열 상태를 노드로 보고, 한 번의 뒤집기로 다른 상태로 이동하는 최단 경로 탐색 문..
Python으로 개발을 한다면 PyCharm은 매우 유용한 IDE 이다. 다양한 기능과 편의성 덕에 많은 개발자들이 사용한다.더 효율적으로 개발을 하고 싶다면 단축키를 사용해 보는 것을 추천한다.단축키를 사용한다면 자주 쓰는 기능들에 쉽게 접근할 수 있음으로 개발 속도가 크게 향상될 수 있기 때문이다. 1. 파일 탐색 및 편집① 프로젝트 뷰 열기Alt + 1 (Windows/Linux), Command + 1 (macOS)프로젝트 뷰를 빠르게 열고 닫을 수 있어 필요할 때 프로젝트 구조를 빠르게 확인하거나 창을 닫아 코드를 넓게 확인할 수 있다.② 파일 열기Ctrl + Shift + N (Windows/Linux), Command + Shift + O (macOS)열고 싶은 파일의 이름 일부만 알고 있다..