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

Algorithm64

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.
조합 조합 : 서로 다른 n개의 원소 중 r개를 순서 없이 골라낸 것 조합의 수식 1. 반복문을 통한 조합 생성 # 0, 1, 2, 3, 4 중 3개의 숫자 조합 만들기 N = 5 for i in range(N-2): for j in range(i+1, N-1): for k in range(j+1, N): print(i, j, k) ''' 0 1 2 0 1 3 0 1 4 0 2 3 0 2 4 0 3 4 1 2 3 1 2 4 1 3 4 2 3 4 ''' 2. 재귀 호출을 이용한 조합 생성 def nCr(n, r, s): if r == 0: print(*comb) else: # s -> 선택할 수 있는 구간의 시작 # s부터 마지막 데이터 중 선택할거야 for i in range(s, n-r+1): comb[r-.. 2022. 9. 21.
순열과 부분집합 순열 : 서로 다른 것들 중 몇개를 뽑아서 한 줄로 나열하는 것 1. 단순하게 순열을 생성하는 방법 : {1, 2, 3} 을 포함하는 모든 순열을 생성하는 함수 >> 루프를 통한 순열 for i in range(1, 4): for j in range(1, 4): if i != j: for k in range(1, 4): if i != k and j != k: print(i, j, k) ''' 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 ''' 2. 최소 변경을 통한 방법 : 각각의 순열들은 이전의 상태에서 단지 두 개의 요소들 교환을 통해 생성 >> 재귀 호출을 통한 순열 def f(i, k): # 깊이가 k이면 리턴 if i == k: print(p) else: for j in ra.. 2022. 9. 21.
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.
Baekjoon_2583_영역구하기, Baekjoon_2667_단지번호붙이기 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net Baekjoon_2583_영역구하기 문제 눈금의 간격이 1인 M×N(M,N≤100)크기의 모눈종이가 있다. 이 모눈종이 위에 눈금에 맞추어 K개의 직사각형을 그릴 때, 이들 K개의 직사각형의 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어진다. 예를 들어 M=5, N=7 인 모눈종이 위에 과 같이 직사각형 3개를 그렸다면, 그 나머지 영역은 와 같이 3개의 분리된 영역으로 나누어지게 된다. 와 같이 분리된 세 영역의 넓이는 각각 .. 2022. 9. 15.
Baekjoon_2468_안전영역 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 문제 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 지역의 높이 정보는 행과 열의 크기가 각각 N인 2차원 배열 형태로 주어지며 배열.. 2022. 9. 15.
SWEA_5117_이진 힙, SWEA_1232_사칙연산 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com SWEA_5117_이진힙 문제 이진 최소힙은 다음과 같은 특징을 가진다. - 항상 완전 이진 트리를 유지하기 위해 마지막 노드 뒤에 새 노드를 추가한다. - 부모 노드의 값 2022. 9. 13.