
SWEA 2117 홈 방범 서비스 (파이썬)
2022. 9. 16. 21:41
SWEA
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V61LqAf8DFAWu SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 및 해설(주석) # 길이가 k인 마름모의 비용을 구하는 함수 def cal_cost(k): return k*k + (k-1)*(k-1) for tc in range(int(input())): N, M = map(int, input().split()) maps = [list(map(int, input().split())) for _ in range(N)] homes = [] # 집이 있는 곳의 ..

SWEA 1861 정사각형 방 (파이썬)
2022. 9. 16. 14:50
SWEA
아이디어 dfs 또는 bfs를 통해 이동할 수 있는 방의 개수를 계산한다. 근데 웬지 시간 초과 날 것 같다. 풀이 및 해설(주석) import sys; sys.stdin = open('input_정사각형.txt', 'r') def dfs(r, c): global total total += 1 visited[r][c] = 1 for di, dj in [[1, 0], [0, 1], [-1, 0], [0, -1]]: nr, nc = r + di, c + dj if 0

SWEA 4615 재미있는 오셀로 게임 (파이썬)
2022. 9. 16. 13:17
SWEA
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWQmA4uK8ygDFAXj SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 및 해설(주석) for tc in range(int(input())): N, M = map(int, input().split()) osero = [[0] * N for _ in range(N)] osero[N//2][N//2] = 2 osero[N//2-1][N//2-1] = 2 osero[N//2-1][N//2] = 1 osero[N//2][N//2-1] = 1 # 현재 위치 주변 8방향 설..

백준 15650 N과 M (2) (파이썬)
2022. 9. 15. 21:31
백준
풀이 import sys def solve(depth, N, M): # depth가 M과 같아질 때 리턴 if depth == M: print(*ans) return for i in range(1, N+1): if visited[i]: continue if not ans: visited[i] = 1 ans.append(i) solve(depth + 1, N, M) ans.pop() visited[i] = 0 elif i > ans[-1]: visited[i] = 1 ans.append(i) solve(depth+1, N, M) ans.pop() visited[i] = 0 N, M = map(int, sys.stdin.readline().split()) arr = [] for i in range(1, N+..

백준 15649 N과 M (1) (파이썬)
2022. 9. 15. 19:41
백준
풀이 import sys def solve(depth, N, M): # depth가 M과 같아질 때 리턴 if depth == M: print(*ans) return for i in range(1, N+1): if visited[i]: continue visited[i] = 1 ans.append(i) solve(depth+1, N, M) # 리턴 후 실행될 코드 # for문이 끝나도 실행이 된다. ans.pop() visited[i] = 0 N, M = map(int, sys.stdin.readline().split()) arr = [] for i in range(1, N+1): arr.append(i) visited = [0] * (N+1) ans = [] solve(0, N, M) 재귀 , 백트래킹..

SWEA 5177 이진 힙 (파이썬)
2022. 9. 15. 14:28
SWEA
https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 def push(item): global last last += 1 h[last] = item c, p = last, last // 2 while True: if p > 0 and h[c] < h[p]: h[c], h[p] = h[p], h[c] c = p p = c // 2 else: break def pop(): ret = h[1] global last h[1] = h[last] last -= 1 p, c = 1, 2 while c

SWEA 5178 노드의 합 (파이썬)
2022. 9. 15. 14:24
SWEA
https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 아이디어 이 문제는 완전이진트리로 주어지는 것 같다. 후위 순회하며 값을 구하면 되겠다. 풀이 def postorder(v): if v

SWEA 1232 사칙연산 (파이썬)
2022. 9. 15. 14:21
SWEA
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141J8KAIcCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 아이디어 단말 노드들에는 숫자가 있다 단말 노드 부터 접근하여 그 부모가 가진 연산자를 사용하여 계산하자. 후위 순회로 접근해야 될 것 같다. (틀림) 코드 def solve(v): for a, b, c, d in calc[::-1]: if b == '+': tree[int(a)] = tree[int(c)] + tree[int(d)] elif b == '-': tree[int(a)] = tree[i..