공부/알고리즘

공부/알고리즘

네트워크 python - [프로그래머스/DFS/BFS 알고리즘]

문제 내용 요약 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 표현합니다. i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 compute..

공부/알고리즘

코테, 코딩 테스트 재귀 함수(DFS, BFS활용) 정리 - [재귀함수/알고리즘]

재귀 함수 정의한 함수안에 정의한 함수를 다시 호출하는 방식 재귀함수를 사용하려면 반드시 함수내의 종료조건을 명시해줘야함 def test_recursive(i): # 종료되는 조건을 반드시 추가해야 종료됨 if i == 10: return print("재귀함수") test_recursive(i+1) 예를들어 백준문제 N-Queen문제같이 백트래킹 문제풀때 활용 9663 문제 python N-Queen [백준-골드4/백트래킹] 문제 내용 요약 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 문제 원리파악 yoon1seok.tistory.com 유클리드 호제법 예제 두 수의 최대공약..

공부/알고리즘

9663 문제 python N-Queen [백준-골드4/백트래킹]

문제 내용 요약 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 문제 원리파악 백트래킹 문제인 만큼 어떻게 백트래킹 되는지 방식을 알아야 된다. 재귀함수 활용한 DFS 탐색 방식 def Back_Track(count, col, i): if count == 0: # 재귀함수를 돌면서 0일때 종료됨 break count -= 1 # 트리로 따지면 가장 안쪽으로 탐색하는 방식 for j in range(1,5): col[i] = j Back_Track(count, col, i+1) col = [0,0,0,0,0] Back_Track(5, col, 0) 문제풀이에 사용되는 For문안의 ..

공부/알고리즘

구명보트 python - [프로그래머스/그리디 알고리즘]

문제 내용 요약 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해..

공부/알고리즘

2609문제 python - [백준-실버5/최대공약수 최소공배수]

문제 내용 요약 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 문제 원리파악 최대 공약수 : 두 수의 약수를 구해서 같은 약수중 최대값 출력 최소 공배수 : 두 수중 작은수에 곱하는 값을 1씩 더해 같아질 때까지 반복 24 18일경우 a0_count = 1 a1_count = 1 18 * 2 = 36 // a1_count + 1증가 24 36 24 * 2 // a0_count + 1증가 이런식으로, 반복하여 같아질 때까지 진행 풀이 a = list(map(int,input().split(" "))) a1_list = [] # 최대 공약수 for i in range(len(a)): plus = [] # 약수 구하는 알고리즘 for j in range(1,a[i]+1..

공부/알고리즘

큰 수 만들기 python - [프로그래머스/그리디 알고리즘]

문제 내용 요약 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 2자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다 문제 원리파악 처음에는 문제를 잘못 이해해서 permutati..

1Seok
'공부/알고리즘' 카테고리의 글 목록 (2 Page)