본문 바로가기

전체 글78

[ROSALIND] DNA 상보적 염기서열 문제 (풀어보기) DNA 서열의 한쪽 염기서열이 주어졌을 때, 상보적으로 쌍을 이루는 염기서열을 반환하시오. 예시 AAAACCCGGT 예상 결과 ACCGGGTTTT *** DNA나 RNA 염기서열을 쓸 때엔 항상 5'에서 3' 방향으로 쓰기 때문에 반대편 서열이 3' - TTTTGGGCCA - 5' 인것을 거꾸로 5' - ACCGGGTTTT - 3' 방향 전환을 해야 정답이 된다. 해결 def rev_complement(dna): print(dna[::-1].upper().replace('A', 't').replace('T', 'a').replace('G', 'c').replace('C', 'g').upper()) 2023. 5. 6.
[ROSALIND] DNA에서 RNA 서열 만들기 문제 (풀어보기) RNA 서열은 A, C, G, U nucleotide를 가지고 있다. DNA 서열 중 coding strand의 서열이 주어졌을때 RNA 서열을 반환하시오. 예시 GATGGAACTTGACTACGTAAATT 예상 결과 GAUGGAACUUGACUACGUAAAUU 해결 def dna_to_rna(dna): print(dna.upper().replace('T', 'U')) DNA와 RNA 염기서열의 차이는 DNA는 Thymine(T)을 가지고 있는 반면에 RNA는 Uracil(U)을 가지고 있다는 것이다. 그리고 문제에서 보면 coding strand 서열이 주어졌다고 하는데 coding strand는 RNA와 같은 서열을 가지고 있다. 그래서 DNA coding strand에서 RNA 서열이.. 2023. 5. 5.
[ROSALIND] DNA nucleotide 세기 문제 (풀어보기) DNA 서열은 A, C, G, T 4가지 nucleotide로 이루어져 있다. DNA 서열이 주어졌을 때 각 nucleotide의 개수를 A, C, G, T 순서로 반환하시오. 예시 AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC 예상 결과 20 12 17 21 해결 def actg_count(dna): dna = dna.lower() print(dna.count('a'), dna.count('c'), dna.count('g'), dna.count('t')) 파이썬에는 간편하게도 이미 string의 특정 문자의 개수를 셀수 있는 기능이 탑재되어 있다. 2023. 5. 4.
[LeetCode] 2658번: Maximum Number of Fish in a Grid Hint 1. 물고기가 있는 곳에서 DFS 알고리즘을 이용해 물고기 수 세기 2. DFS 시작지점을 찾았다면 연결된 모든 물고기 있는 곳에서 물고기 수 더하기 3. 물고기 있는 곳을 이미 방문했는지 확인하는 리스트가 필요함 (중복으로 더하기 않게) LeetCode 2658번: Maximum Number of Fish in a Grid (풀어보기) class Solution: def findMaxFish(self, grid: List[List[int]]) -> int: # 낚시가 이미 된 부분 표시해주는 세트 fished = set() def fishing(r, c): # 아래 3가지가 다 통과하지 못하면 물고기가 없으므로 0을 반환함 if not (0 2023. 5. 1.
[LeetCode] 2181번: 기존 연결 리스트 수정하기 Hint 1. 어떻게 하면 포인터 2개를 이용해서 기존 리스트를 원하는 결과로 수정할 수 있을까? 2. 포인터 1개는 수정하는 노드 위치에 (a), 다른 하나는 리스트 전체를 확인하는 용도(b)로 이용해보자! 3. 움직이는 포인터b가 그 다음 0에 도달할 때까지 숫자들을 수정하는 포인터a 위치에 더하면 된다. 4. 마지막 노드는 null에 연결되도록 바꿔야한다. LeetCode 2181번: Merge Nodes in Between Zeros (풀어보기) class Solution: def mergeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]: # 포인터 2개 만들기 # now = 덧셈할 포인터 위치 # pointer = 리스트 전체를 확인할 .. 2023. 4. 30.
[에러모음] fatal: 'origin' does not appear to be a git repository 에러 상황 VSCode에서 깃허브로 push 할 때 발생한 에러 해결 우선 git remote -v 로 현재 프로젝트 폴더가 깃허브 레포지토리에 잘 연결되어 있는지 확인한다. 만약 연결된 레포지토리가 없다면 연결시켜줘야 한다. $ git remote add origin https://github.com/cgy0627/02_PhotoApp.git # 이렇게 하면 https://github.com/cgy0627/02_PhotoApp.git 레포지토리가 origin 이라는 이름으로 연결된다. 내 경우에는 이미 레포지토리에 잘 연결되어 있었다. 이미 연결이 되어 있다면 깃허브로 push 할 때, 이미 정해진 remote name을 사용해야한다. 위 스크린샷에 보시다시피 내 경우는 remote name이 이미 0.. 2023. 4. 29.
[LeetCode] 1828번: 원 안의 점 개수 Hint 1. 원과 점들의 최대 개수가 각각 500개이기 때문에 for문 2개를 사용해서 일일이 비교해도 된다 2. Follow up에 O(n)으로 풀어보라고 되어있지만 이건 나중에 도전...^^ LeetCode 1828번: Queries on Number of Points Inside a Circle (풀어보기) class Solution: def countPoints(self, points: List[List[int]], queries: List[List[int]]) -> List[int]: # points를 x, y 순서로 작은 숫자부터 큰 숫자까지 정렬한다 points = sorted(points, key=lambda x: (x[0],x[1])) answer = [] for query in que.. 2023. 4. 28.
VSCode와 GitHub 연동하기 2 (명령어 버전) Goal 1. VSCode에서 GitHub 연동을 명령어로 하는 방법 알아보기 2. 명령어 없이 하는 방법과 비교하기 VSCode - GitHub 연동하기 1. GitHub에서 새로운 레포지토리 만들기 (Respositories > New > Create repository) 2. VSCode bash 터미널에서 내가 GitHub로 올리고 싶은 폴더 열기 3. 프로젝트에 Git 저장소를 새로 생성하기 4. 현재 프로젝트에 있는 모든 내용을 스테이징 영역(staging area)에 추가하기 5. 스테이징 영역에 올라온 내용들을 버전으로 기록하기 = 커밋(commit) 6. 코드 버전 관리를 위한 메인 브랜치 이름을 master에서 main으로 바꿔주기 7. "origin"이라는 이름으로 1번에서 생성한 레.. 2023. 4. 1.
상태 코드 Goal 1. 상태 코드에 대해 설명하기 2. 대표적인 상태 코드 알아보기 상태 코드란? 인터넷을 자주 활용한다면 위 그림에 보이는 페이지를 한번쯤은 보았을 것이다. 404 라는 것이 상태 코드이다. 상태 코드는 세 자리 숫자로 클라이언트에서 온 요청에 대한 서버의 응답 상태를 보여준다. 이 값은 HTTP에 포함 된 값으로, 웹 개발을 하고 있다면 계속 보게 될 것이다. Django Rest Framework(DRF)에서는 Response 객체가 상태 코드에 대한 정보를 담고 있다. 대표적인 상태 코드 HTTP 상태 코드 의미 HTTP_200_OK 데이터를 요청하는 GET 요청이 정상적으로 이뤄졌을 때 HTTP_201_CREATED 데이터를 생성하는 POST 요청이 정상적으로 이뤄졌을 때 HTTP_206.. 2023. 3. 26.