본문 바로가기

전체 글400

JadenCase 문자열 만들기 첫번째 코드 대소문자가 섞여 있는 문자열이 존재할 수 있으므로 모두 소문자로 바꾼 후에 맨 앞의 문자만 대문자로 바꾼다고 생각을 하면 될 듯 하다.그렇기 때문에 모두 소문자로 변환하고 맨 앞의 문자만 대문자로 바꾼다. def solution(s):     s = s.lower()     s = s.split(' ')     answer = []     for i in s:         i = i[0].upper() + i[1:]         answer.append(i)     return ' '.join(answer) 해당 코드가 틀린 것 같지는 않은데...시간 초과가 나타난다...힝.. 두번째 코드 왠지 맨 앞글자만 대문자로 바꾸는 함수가 있을 것 같아서 서칭을 통해서 발견했다!capitalize.. 2024. 5. 18.
DFS 깊이 우선 탐색 DFS (Depth-First Search) 그래프 완전 탐색 기법 중 하나 그래프의 시작 노드에서 출발해서 탐색할 한 쪽 분기를 정해서 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘 - 재귀 함수로 구현 -> 스택 오버플로 (stack overflow)에 유의!! - 스택 자료 구조 이용 한번 방문한 노드를 다시 방문하면 안되므로 노드 방문 여부를 체크할 리스트 필요 그래프는 인접 리스트로 표현 탐색 방식: 후입선출 (stack 이므로!) 1. DFS 시작 시 시작 노드를 정한 후 사용할 자료 구조 초기화하기 초기작업 - 인접 리스트로 그래프 표현하기 - 방문 리스트 초기화하기 - 시작 노드 스택에 삽입하기 2. 스택에서 노드를 꺼낸 후 꺼낸 노드.. 2024. 5. 18.
피보나치 수 첫번째 코드 그래도 피보나치 저번에 경험해봐서 이번에 조금 익숙한 느낌이었다.이전 두개의 값을 더해서 다음의 값을 내는 것 사실 문제를 끝까지 읽지 않아(이놈아;) 에러가 났지만 나머지를 가져오지 않았던 것...근데 런타임 에러도 있기도 했고 설마 나는 number라는 리스트에 모든 값을 저장해나가면서 했는데 그게 용량을 좀 더 많이 쓰이려나 싶어서 number라는 리스트를 두개의 값만 고정해서 원소를 삽입하고 제거하는 방법으로 했다 def solution(n):          number = [0, 1]     for i in range(2, n+1):         number.append(number[0] + number[1])         number.pop(0)              ret.. 2024. 5. 18.
카펫 첫번째 코드 중심의 yellow가 n행에 m열짜리 일 때, brown은 2(n+m)+4라고 생각을 했다 이와 관련하여 n을 (brown-4)/2까지 숫자를 반복해서(나머지 수를 m이라 생각) yellow식에 맞는 값만 추출한다 그리고 이후에 내림차순을 정렬한다 말로 표현하기 어려워서 그림으로 대체한다! 이해가 훨씬 편하다 def solution(brown, yellow): answer = [] range_num = int((brown - 4) / 2) for n in range(range_num): if n * (range_num - n) == yellow: answer.append(n + 2) answer.append(range_num - n + 2) break answer.sort(reverse = .. 2024. 5. 17.
기사단원의 무기 첫번째 코드 약수를 구하는 방법이 포인트겠군...값에 반복해서 나눠서 맞는거면 count에 추가하는 형식이면 약수를 구하는 방법! def solution(number, limit, power):          divisor = []     count = 0          for i in range(1, number+1):         for j in range(1, i+1):             if i%j == 0:                 count += 1         divisor.append(count)          for i in range(number):         if divisor[i] > limit:             divisor[i] = power       .. 2024. 5. 17.
027 미로 탐색 첫번째 코드 어...DFS보다는 익숙하지 않아도 재귀가 덜 들어가서 할 수 있겠... 네? 행렬이요?! 도와줘요 책님;;; 상하좌우를 살피면서 방문 리스트도 행렬로 만들어 확인하면 된다... 어... 문제를 이해하고 코드를 확인하면 이해가 된다... 근데 과연 나 혼자서 할 수 있을까...? import sys input = sys.stdin.readline from collections import deque dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] n, m = map(int, input().split()) A = [[0] * m for _ in range(n)] visited = [[False] * m for _ in range(n)] for i in range(n): nu.. 2024. 5. 16.
728x90