본문 바로가기
  • 살짝 구운 김 유나

Algorithm/SWEA10

SWEA_1267_작업순서 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 코드 import sys sys.stdin = open('1267_input.txt', 'r') def bfs(v): Q = [] Q.append(v) visited[v] = 1 res.append(v) while Q : v = Q.pop(0) for t in G[v]: check = 1 for p in P[t]: if not visited[p]: check = 0 break # 앞선 작업을 다 수행한 상황이면 다음 노드로 if check and visited[t] == 0: Q.append(t) visited[t] = 1 res.append(t) for test.. 2022. 9. 25.
SWEA_2832_미생물격리 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 해결방법 1. 모든 미생물들이 움직인 이후에 두개 이상의 군집이 모이는 곳을 확인해야 한다. -> 방향이 잘 못 결정될 수 있기 때문 -> 추가로 선언한 3차원 배열에 저장하면서 진행하고 모든 미생물이 움직인 후에 하나의 군집으로 다시 생성 2. 한 시간이 지날 때 마다 미생물들의 정보를 새롭게 갱신해주어야 한다. 3차원 배열 선언 posiLst = [[[] for _ in range(N)] for _ in range(N)] 한줄 if - else cells[i][3] = cells[i][3] - 1 if cells[i][3] % 2 == 0 else cells[.. 2022. 9. 23.
SWEA_1247_최적경로 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 삼성전자의 서비스 기사인 김대리는 회사에서 출발하여 냉장고 배달을 위해 N명의 고객을 방문하고 자신의 집에 돌아가려한다. 회사와 집의 위치, 그리고 각 고객의 위치는 이차원 정수 좌표 (x, y)로 주어지고 (0 ≤ x ≤ 100, 0 ≤ y ≤ 100) 두 위치 (x1, y1)와 (x2, y2) 사이의 거리는 |x1-x2| + |y1-y2|으로 계산된다. 여기서 |x|는 x의 절대값을 의미하며 |3| = |-3| = 3이다. 회사의 좌표, 집의 좌표, 고객들의 좌표는 모두 다르다. 회사에서 출발하여 N명의 고객을 모두 방문하고 집으로 돌아오는 경로 중 가장.. 2022. 9. 22.
SWEA_5188_최소합, SWEA_5189_전자카트 둘다 재귀로 완전탐색..! SWEA_5188_최소합 문제 그림처럼 NxN 칸에 숫자가 적힌 판이 주어지고, 각 칸에서는 오른쪽이나 아래로만 이동할 수 있다. 맨 왼쪽 위에서 오른쪽 아래까지 이동할 때, 지나는 칸에 써진 숫자의 합계가 최소가 되도록 움직였다면 이때의 합계가 얼마인지 출력하는 프로그램을 만드시오. 1 2 3 2 3 4 3 4 5 그림의 경우 1, 2, 3, 4, 5순으로 움직이고 최소합계는 15가 된다. 가능한 모든 경로에 대해 합을 계산한 다음 최소값을 찾아도 된다. 입력 첫 줄에 테스트케이스의 수 T가 주어진다. 1 2022. 9. 22.
SWEA_4615_재미있는오셀로게임, SWEA_2117_홈방범서비스 SWEA_4615_재미있는오셀로게임 재미 한탱이도 없음 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 오셀로라는 게임은 흑돌과 백돌을 가진 사람이 번갈아가며 보드에 돌을 놓아서 최종적으로 보드에 자신의 돌이 많은 사람이 이기는 게임이다. 보드는 4x4, 6x6, 8x8(가로, 세로 길이) 크기를 사용한다. 6x6 보드에서 게임을 할 때, 처음에 플레이어는 다음과 같이 돌을 놓고 시작한다(B : 흑돌, W : 백돌). 4x4, 8x8 보드에서도 동일하게 정가운데에 아래와 같이 배치하고 시작한다. 그리고 흑, 백이 번갈아가며 돌을 놓는다. 처음엔 흑부터 시작하는데 이 때 흑이 돌을 놓을 수 있는 곳은 다음과.. 2022. 9. 16.
SWEA_1248_공통조상, SWEA_11315_오목판정 SWEA_1248_공통조상 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 이진 트리에서 임의의 두 정점의 가장 가까운 공통 조상을 찾고, 그 정점을 루트로 하는 서브 트리의 크기를 알아내는 프로그램을 작성하라. 예를 들어, 위의 이진 트리에서 정점 8과 13의 공통 조상은 정점 3과 1 두 개가 있다. 이 중 8, 13에 가장 가까운 것은 정점 3이고, 정점 3을 루트로 하는 서브 트리의 크기(서브 트리에 포함된 정점의 수)는 8이다. 입력 가장 첫 번째 줄에 테스트케이스의 수가 주어진다. 각 케이스의 첫 번째 줄에는 정점의 개수 V(10 ≤ V ≤ 10000)와 간선의 개수 E, 공통 조상을 찾는 두 .. 2022. 9. 15.
SWEA_5117_이진 힙, SWEA_1232_사칙연산 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com SWEA_5117_이진힙 문제 이진 최소힙은 다음과 같은 특징을 가진다. - 항상 완전 이진 트리를 유지하기 위해 마지막 노드 뒤에 새 노드를 추가한다. - 부모 노드의 값 2022. 9. 13.
SWEA_5178_노드의합, SWEA_5174_subtree, SWEA_5716_이진탐색 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com SWEA_5174_subtree 문제 트리의 일부를 서브 트리라고 한다. 주어진 이진 트리에서 노드 N을 루트로 하는 서브 트리에 속한 노드의 개수를 알아내는 프로그램을 만드시오. 주어지는 트리는 부모와 자식 노드 번호 사이에 특별한 규칙이 없고, 부모가 없는 노드가 전체의 루트 노드가 된다. 이런 경우의 트리는 부모 노드를 인덱스로 다음과 같은 방법으로 나타낼 수 있다. 자식 노드가 0인 경우는 노드가 자식이 없는 경우이다. 입력 첫 줄에 테스트케이스의 수 T가 주어진다. 1 2022. 9. 12.
SWEA_12712_파리퇴치3, SWEA_9489_고대유적 SWEA_12712_파리퇴치3 문제 N x N 배열 안의 숫자는 해당 영역에 존재하는 파리의 개체 수를 의미한다. 아래는 N=5 의 예이다. 파리 킬러 스프레이를 한 번만 뿌려 최대한 많은 파리를 잡으려고 한다. 스프레이의 노즐이 + 형태로 되어있어, 스프레이는 + 혹은 x 형태로 분사된다. 스프레이를 M의 세기로 분사하면 노즐의 중심이 향한 칸부터 각 방향으로 M칸의 파리를 잡을 수 있다. 다음은 M=3 세기로 스프레이르 분사한 경우 파리가 퇴치되는 칸의 예로, +또는 x 중 하나로 분사된다. 뿌려진 일부가 영역을 벗어나도 상관없다. 한 번에 잡을 수 있는 최대 파리수를 출력하라. 제약사항 1. N 은 5 이상 15 이하이다. 2. M은 2 이상 N 이하이다. 3. 각 영역의 파리 갯수는 30 이하 이.. 2022. 8. 29.
SWEA_13976_기지국 SS 텔레콤에서 현재 기지국의 위치와 집들이 표시된 지도를 2차원 nxn 배열로 변환하여, 기지국에 커버 되지 않는 집의 수를 찾고자 한다. 기지국은 [그림1]과 같이 세가지 종류가 있다. 각각의 기지국은 기지국이 위치한 셀에서 동서남북으로 각 1개, 2개, 3개의 셀을 커버하며, 하나의 집은 1개의 셀에 있다. 문제 주어진 2차원 배열 지도에 위치한 기지국으로 커버되지 않는 집의 수를 찾는 프로그램을 작성하시오. 제약사항 2차원 배열의 크기의 n은 50이하이다. 기지국의 수는 50이하이다. 입력 첫 줄에는 테스트 케이스의 수가 주어지고, 그 다음 줄부터 각 테스트 케이스가 n+1개의 줄로 구성된다. 테스트 케이스의 첫 줄에는 n이 주어지고, 다음 n개 줄에는 2차원 배열의 각 행이 한 줄에 차례로 주어.. 2022. 8. 28.