일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 동적계획법과최단거리역추적
- 백준
- Algorithm
- codingtest
- DFS와BFS
- C++
- vuejs
- 안드로이드
- android
- 코딩테스트
- 코드품앗이
- 파이썬
- Python
- 분할정복
- cos
- AndroidStudio
- cos pro 1급
- cos pro
- BAEKJOON
- django
- 알고리즘
- 개발
- 안드로이드스튜디오
- 코테
- issue
- 동적계획법
- Vue
- Flutter
- DART
- DFS
- Today
- Total
목록Algorithm (123)
Development Artist
접근 - NxN 개의 시작점을 전부 방문하여 가장 높은 곳을 찾습니다. - 높은 곳은 여러개일 수 있으며 각 출발점에서 좌우상하로 가는 경우를 계산하고 기록합니다. > 위의 정보를 바탕으로 풀이방법을 유추해 봅니다. > DFS 입니다. ※ DFS인지 유추가 안된다. 시간이 없을 경우 DFS 문제 검색 후 10개만 한번 지문을 읽어보세요. 조건 - 조건이 있는지 확인합니다. > 높은 곳에서 낮은 곳으로 나아갑니다. > 공사 가능한 깊이 K에 대한 처리를 해줍니다. DFS 로직 재귀함수 : dfs def DFS(): for ~ : DFS() 상하좌우 : 방향좌표 변수들을 미리 지정한다. dx = [-1,0,1,0] dy = [0,1,0,-1] 방문배열 : 방문했는지 안했는지를 체크하는 배열 visited =..
도입 프로그래머스 고득점 kit BFS/DFS 알고리즘 첫 번째 문제이다. 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다...
도입 프로그래머스 고득점 kit BFS/DFS 알고리즘 두 번째 문제이다. 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 ..
도입 프로그래머스 고득점 kit BFS/DFS 알고리즘 네 번째 문제이다. 문제 설명 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다. tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. 주어진 항공권은 모두 사용해야 합니다. 만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다. 모든 도시를 방문할 수 없는 경..
문제 유형 빈칸 난이도 easy Note 1.func_a : stack에서 값을 꺼냄.(pop) func_b : stack1에서 pop해서 stack2에 넣는 함수. func_c : stack이 비었는지 체크하는 함수. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def func_a(stack): return stack.pop() def func_b(stack1, stack2): while not func_c(stack1): item = func_a(stack1) stack2.append(item) def func_c(stack): return (len(stack) == 0) def solution(stack1, stack2): if ..
문제 유형 빈칸 난이도 easy Note 1.func_a : check된 배열을 가지고 DP 방식으로 이전 값과 다르면 1 증가시켜서 ret에 저장. func_b : 이전에서 증가하는지 감소하는지 체크하여 ret 배열에 넣음. (0 또는 1이 들어있음. 0 0 1 0 1 0 0 .. 이런식) func_c : ret에서 최대값을 출력. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean INC = 0 DEC = 1 def func_a(arr): length = len(arr) ret = [0 for _ in range(length)] ret[0] = 1 for i in range(1, length): if arr[i] != arr[i-1]: r..
문제 유형 빈칸 난이도 easy Note 1. 문제 자체는 쉬웠다. 2. 하지만, 함수 구현 문제로 나올 수 있으니, 해당 로직은 알 필요가 있다. 3. left 업데이트를 기존의 left와 num과 비교하여 num이 크면 업데이트를 하고, right 업데이트도 마찬가지로 기존 right과 num을 비교하여 num이 더 작을경우 right을 업데이트 한다. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def solution(K, numbers, up_down): left = 1 right = K for num, word in zip(numbers, up_down): if word == "UP": left = max(left, num) ..
문제 유형 한줄 수정(디버깅) 난이도 easy Note 1. 문제 자체는 쉬웠다. 2. 하지만, 함수 구현 문제로 나올 수 있으니, 해당 로직은 알 필요가 있다. 3. grid[i][j] + grid[j][k] (가로로 접었은 것) 와 grid[i][j] + grid[k][i] (세로로 접은 것) 중 더 큰 것과 answer를 비교해서 answer에 업데이트. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def solution(grid): answer = 0 for i in range(4): for j in range(4): for k in range(j + 1, 4, 2): answer = max(answer, max(grid[i][..
문제 유형 한줄 수정(디버깅) 난이도 easy Note 1. 문제 자체는 쉬웠다. 2. 하지만, 함수 구현 문제로 나올 수 있으니, 해당 로직은 알 필요가 있다. 3. coins[0][0] 부터 시작해서 오른쪽, 아래로 가면서 코인을 더해감. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def solution(board): coins = [[0 for c in range(4)] for r in range(4)] for i in range(4): for j in range(4): if i == 0 and j == 0: # 초기세팅 coins[i][j] = board[i][j] elif i == 0 and j != 0: # 아래로 coin..
문제 유형 한줄 수정(디버깅) 난이도 easy Note 1. 문제 자체는 쉬웠다. 2. 하지만, 함수 구현 문제로 나올 수 있으니, 해당 로직은 알 필요가 있다. 3. card : 전체, card_a : 반으로 나눠진 일부, card_b : 반으로 나눠진 나머지 -> card = card_a + card+b Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def solution(n, mix, k): answer = 0 card = [_ for _ in range(1, n+1)] while mix != 0: mix = mix - 1 card_a, card_b = [0 for _ in range(n//2)], [0 for _ in range(..