SWEA D3

SWEA (SW Expert Academy)/D3

[SWEA/D3] 1225 암호생성기 / DFS, for문 실행시간 비교

문제 바로가기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 코드 및 설명 01 - DFS 풀이 def dfs(count, num): #count:숫자 이동횟수 / num:이동한 숫자 global ans if num == 0: #이동한 숫자가 0이라면 ans = 1 #ans 값을 1로 갱신 return #리턴해주어야 더이상 실행하지 않음 if count == 5: #한 번에 5회까지 반복. 이것이 한 사이클 return x = num_list.pop(0) #1.리스트의 맨 앞 숫자를 x에 저장 x = x - (count+1) #2.x를 1부터 5까지 순차적으로 뺀다. 처음은 1을 뺌 if x

SWEA (SW Expert Academy)/D3

[SWEA/D3] 1220 Magnetic

문제 바로가기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 코드 및 설명 0은 배제하고 1(N)과 2(S)가 "12"의 형태로 붙어있다면 교착상태로 본다. for test_case in range(1,11): n = int(input()) board = [] for _ in range(n): board.append(list(map(int, input().split()))) count = 0 for i in range(n): temp_list = [] #0을 제외하고 1,2가 연속으로 있는지 확인하기 위한 리스트 for j in range(n): if board[j][i] == 1: #1일 때, if t..

SWEA (SW Expert Academy)/D3

[SWEA/D3] 1244 최대 상금 / 백트래킹

문제 바로가기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 코드 및 설명 dfs 함수 : 2중 for문을 통해 두 개의 숫자판을 선택한 후, 목표 교환 횟수만큼 dfs를 수행했다면 변수에 저장된 prize 리스트를 숫자화시키고 이전의 최댓값과 비교하여 리턴한다. 위와 같이 풀이한다면 시간 초과가 발생한다. 시간 초과를 피하기 위해서는 가지치기(중복 제거)를 해줘야 하는데, 방법은 아래와 같다. 메인 함수에 룩업테이블인 visited 리스트를 생성하고, 숫자판 교환을 끝낸 숫자리스트가 visited에 없다면 append 해주어 방문 처리 해주면 된다. 이 때, dfs 함수 호출 번호를 표시하기 위해, d..

SWEA (SW Expert Academy)/D3

[SWEA/D3] 2814 최장 경로 / DFS

백준 선행 문제 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 바로가기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 코드 및 설명 선택한 노드에 대하여, 끝까지 탐색해봐야 최장 거리를 비교할 수 있기 때문에 DFS로 문제를 푸는 것이 적합하다. 메인 함수 부분에서, for문을 통해 시작점이 되는 노드의 모든 경우의 수를 탐색한다. dfs 함수에서 시작점 노드와 방..

SWEA (SW Expert Academy)/D3

[SWEA/D3] 1216 회문2 / 2차원 리스트 가로,세로 변환

문제 바로가기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 코드 및 설명 for test_case in range(1, 11): t = int(input()) board = [] for _ in range(100): board.append(list(input())) garo_max_length = 0 for i in range(100): #세로 줄 만큼 반복 for j in range(100): #가로 줄 시작점 for k in range(j, 100): #가로 줄 끝나는점 garo_temp_list = board[i][j:k+1] #가로 줄 시작점 부터 끝나는점까지 리스트로 만든다 if garo_te..

SWEA (SW Expert Academy)/D3

[SWEA/D3] 2817 부분 수열의 합 / 백트래킹

문제 바로가기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 코드 및 설명 - 멀티 트리 현재 방문한 수열의 인덱스에 대해 v 리스트를 활용하여 방문 처리를 해주었고, 합의 개수를 셀 때 중복된 값을 세지 않도록 for문의 시작점을 dfs의 변수에 넘겨주었다. def dfs(count, temp_sum, start): global ans if temp_sum >= k: if temp_sum == k: ans += 1 return if count == n: return for i in range(start, n): if v[i] == 0: v[i] = 1 dfs(count + 1, temp_sum+num_..

SWEA (SW Expert Academy)/D3

[SWEA/D3] 5215 햄버거 다이어트 / 백트래킹

문제 바로가기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 코드 및 설명 - 이진트리 dfs함수를 정의하고 재료를 선택할 때와 선택하지 않고 그냥 넘어갈 때의 두 가지 경우를 하위 함수를 호출하는 방식으로 구현하였다. def dfs(count, score_sum, cal_sum): global max_score if cal_sum>limit: #처음에 limit 대신 1000을 넣어서 TC 20개 중 10개만 맞음 .. return if max_score < score_sum: max_score = score_sum if count == n: return dfs(count+1, score_sum+sco..

SWEA (SW Expert Academy)/D3

[SWEA/D3] 1206 [S/W 문제해결 기본] 1일차 - View

문제 바로가기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 코드 및 설명 01 현재 건물을 기준으로 양 옆의 네 건물들을 확인하여 조망권이 확보되었는지 파악하는 코드를 작성하였다. for test_case in range(1, 11): ans = 0 n = int(input()) # 건물의 개수 apt = list(map(int, input().split())) for i in range(2, len(apt)): #첫 번째 건물일 경우 뒤에 있는 건물 두개만 확인 if i == 2: #현재 건물이 다음 건물과 그 다음 건물보다 클 경우에만 해당됨 if apt[i] > apt[i+1] and apt[i]..

hellosonic
'SWEA D3' 태그의 글 목록 (4 Page)