DFS(깊이 우선 탐색) 재귀 함수를 이용해 구현 시작 노드에서부터 출발해 한 방향으로 최대한 깊게 탐색한 후, 다른 방향의 노드를 탐색 스택 또는 재귀 호출을 통해 구현 모든 노드를 방문하고자 할 때 사용 def dfs(graph, start, visited=None): # 방문한 노드들을 저장할 집합을 초기화 if visited is None: visited = set() # 현재 노드를 방문한 것으로 표시하고, 방문한 노드 집합에 추가 visited.add(start) # 현재 노드를 출력 print(start) # 방문한 노드 출력 # 현재 노드의 이웃 노드들을 탐색 for neighbor in graph[start]: # 이웃 노드가 방문한 적이 없다면 재귀적으로 방문 if neighbor no..
Algorithm
1. 회전 1-1. zip() 정사각형, 직사각형 모두 동일하게 적용 arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] # 시계 90 (= 반시계 270) arr_90 = list(map(list, zip(*arr[::-1]))) print(arr_90) # 시계 180 arr_180 = [a[::-1] for a in arr[::-1]] # 시계 270 (= 반시계 90) arr_270 = [x[::-1] for x in list(map(list, zip(*arr[::-1])))[::-1]] 1-2. 인덱스 규칙 찾아서 회전 정사각형 arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] n = 3 # 시계 방향 90 (= 반시계 방향 270)..
Programmers 삼각형의 완성 조건 (2) https://school.programmers.co.kr/learn/courses/30/lessons/120868 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 코드 def solution(sides): answer = 0 for i in range(1, sum(sides)): if i >= max(sides) and i i and (i+min(sides)) > max(sides): answer += 1 return answe..
Programmers 영어가 싫어요 https://school.programmers.co.kr/learn/courses/30/lessons/120894 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 코드 딕셔너리의 key를 활용한 풀이 def solution(numbers): words = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'} for i in words.k..
Programmers 문자열 계산하기 https://school.programmers.co.kr/learn/courses/30/lessons/120902 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 코드 eval 을 사용하여 문자열 계산 def solution(my_string): return eval(my_string) split 후 for문 활용 def solution(my_string): s = my_string.split() answer = int(s[0]) for i in range(1,len(s),2): if s[i]=='+': answ..