CS/알고리즘_문제풀이(파이썬) 183

공기 청정기

시간제한 3초 문제 강의실의 쾌적한 공기 상태를 보장하기 위해 공기청정기를 설치했다. 어느날, 공기청정기가 제대로 동작하는지 궁금해진 영진은 현재 강의실의 공기상태를 알아내는 프로그램을 만들었다. 편의상 강의실 내부는 격자판으로 그려지고, 각 칸에는 공기의 나쁨 정도를 숫자로 표현하도록 제작되었다. 매초 확산이 먼저 일어나고 공기청정기가 작동한다 가정하자. [그림 1] 해당 프로그램에서 공기의 확산 특징은 다음과 같다. 공기는 현재 위치에서 x, y좌표와의 거리가 1이상 k이하인 위치들로 확산된다. 두 점 (x1, y1), (x2, y2)의 거리는 |x1-x2| + |y1-y2|로 구한다. 만약 확산할 좌표가 존재하지 않거나, 공기청정기 위치일 경우 해당 위치로는 퍼지지 않는다. 공기의 나쁨 정도가 2k..

확산 알고리즘

문제 세로 길이 N, 가로 길이 M 인 2차원 배열이 주어진다. 이 배열의 각 칸에 들어있는 수는 1초에 한번씩 자기 자신을 나눠서 x, y좌표와의 거리가 1이상 k이하인 칸들에 더해준다. 두 점 (x1, y1), (x2, y2)의 거리는 |x1-x2| + |y1-y2|로 구한다. 이때 주변에 나눠주는 값은 현재 그 칸에 있는 값을 2 k2 + 2 k + 1로 나눈 몫이고, 주변에 나눠준 만큼 원래 있던 값은 줄어들게 된다. 예를 들어, 아래 그림에서 k가 1이라면 t = 0의 (2,1)위치에 있는 8은 8/5의 몫인 1을 주변에 있는 세 칸에 나눠주고, 자기자신은 3만큼 줄어든다. t초가 지난 후 배열의 상태를 출력하여라. 입력 첫 번째 줄에 N, M, k 가 주어진다. 두 번째 줄부터 N 줄에 걸쳐 ..

밀기 알고리즘 2

문제 세로 길이 N, 가로 길이 M 인 2차원 배열과 두 정수 u, d 가 주어진다. 이 배열의 0 번 부터 u 번 까지의 행은 테두리가 시계방향으로 한 칸 씩 밀리고, d 번 부터 n - 1 번 까지의 행은 테두리가 반시계방향으로 한 칸 씩 밀린 배열을 출력하여라. 여기서 테두리란 해당 범위의 상하좌우 끝 줄을 의미한다. 입력 첫 줄에 N, M 이 주어진다. 두 번째 줄부터 N 줄에 걸쳐 각 줄에 M 개씩 배열의 수가 주어진다. 마지막 줄에 u, d 가 주어진다. (4 ≤ N, M ≤ 100, 1 ≤ 수열을 구성하는 수 ≤ N x M, 0 < u < d < N - 1) 출력 밀기가 끝난 배열을 출력한다. 입력의 예 1 5 5 2 3 1 1 4 1 3 2 3 4 1 2 7 3 7 3 2 1 4 2 1 4..

N칸 확산

문제 세로 길이 N, 가로 길이 M 인 2차원 배열이 주어진다. 이 배열의 각 칸에 들어있는 수는 1 초에 한 번 씩 자기 자신을 복사해서 x, y좌표와의 거리가 1이상 k이하인 칸들에 더해준다. 두 점 (x1, y1), (x2, y2)의 거리는 |x1-x2| + |y1-y2|로 구한다. t 초가 지난 후 배열의 상태를 출력하여라. 중간 계산 과정과 최종 결과의 모든 수는 int 로 표현 가능함이 보장된다. 입력 첫 줄에 N, M, k 가 주어진다. 두 번째 줄부터 N 줄에 걸쳐 배열의 값이 주어진다. 마지막 줄에 t 가 주어진다. (1 ≤ N, M ≤ 5, 1 ≤ k ≤ 4, 1 ≤ 배열의 값 ≤ 10, 1 ≤ t ≤ 3) 출력 t 초 후 배열을 출력한다. 입력의 예 1 3 4 2 5 1 3 4 2 5..

2차원 확산

문제 세로 길이 N, 가로 길이 M 인 2차원 배열이 주어진다. 이 배열의 각 칸에 들어있는 수는 1 초에 한 번 씩 자기 자신을 복사해서 상하좌우로 인접한 칸들에 더해준다. t 초가 지난 후 배열의 상태를 출력하여라. 입력 첫 줄에 N, M 이 주어진다. 두 번째 줄부터 N 줄에 걸쳐 배열의 값이 주어진다. 마지막 줄에 t 가 주어진다. (1 ≤ N, M ≤ 100, 1 ≤ 배열의 값, t ≤ 10) 출력 t 초 후 배열을 출력한다. 입력의 예 1 3 4 5 1 3 4 2 5 1 2 7 8 3 1 2 출력의 예 1 41 48 46 26 61 87 61 37 59 70 56 27 입력의 예 2 2 5 1 0 1 0 1 0 1 0 1 0 5 출력의 예 2 226 399 436 399 226 235 381 ..

1차원 확산

문제 0 과 1 로 이루어진 길이가 N 인 수열이 주어진다. 이 수열에서 1 과 인접한 0 을 모두 1 로 바꾼 수열을 출력하여라. 입력 첫 줄에 N 이 주어진다. 두 번째 줄에 0 과 1 로 이루어진 수열이 주어진다. (1 ≤ N ≤ 1,000) 출력 1 과 인접한 0 을 모두 1 로 바꾼 수열을 출력한다. 입력의 예 1 6 1 0 0 0 1 0 출력의 예 1 1 1 0 1 1 1 입력의 예 2 6 1 0 0 0 0 1 출력의 예 2 1 1 0 0 1 1 입력의 예 3 8 0 1 0 0 1 0 0 1 출력의 예 3 1 1 1 1 1 1 1 1 입력의 예 4 10 1 0 0 0 1 1 0 0 0 1 출력의 예 4 1 1 0 1 1 1 1 0 1 1 #코드 1 2 3 4 5 6 7 8 9 10 11 12 ..

2차원 밀기

문제 세로 길이 N, 가로 길이 M 인 2차원 배열이 주어진다. 이 배열의 테두리가 시계방향으로 한 칸 씩 밀린 배열을 출력하여라. 여기서 테두리란 배열의 상하좌우 끝 줄을 의미한다. 입력 첫 줄에 N, M 이 주어진다. 두 번째 줄부터 N 줄에 걸쳐 각 줄에 M 개씩 배열의 수가 주어진다. (3 ≤ N, M ≤ 100, 1 ≤ 수열을 구성하는 수 ≤ N x M) 출력 밀기가 끝난 배열을 출력한다. 입력의 예 1 3 5 2 3 1 1 4 1 3 2 3 4 1 2 7 3 7 출력의 예 1 1 2 3 1 1 1 3 2 3 4 2 7 3 7 4 입력의 예 2 4 4 1 2 4 2 3 4 1 7 8 3 1 6 9 8 9 7 출력의 예 2 3 1 2 4 8 4 1 2 9 3 1 7 8 9 7 6 입력의 예 3 3..

CHEEZE

문제 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색 으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모칸에 엑스친 부분)에는 치즈가 놓여 있지 않으며 치즈에는 하나 이상의 구멍이 있을 수 있다. 이 치즈를 공기 중에 놓으면 녹게 되는데 공기와 접촉된 칸은 한 시간이 지나면 녹아 없어진다. 치즈의 구멍 속에는 공기가 없지만 구멍을 둘러싼 치즈가 녹아서 구멍이 열리면 구멍 속으로 공기가 들어 가게 된다. 의 경우, 치즈의 구멍을 둘러싼 치즈는 녹지 않고 ‘c’로 표시된 부분만 한 시간 후 에 녹아 없어져서 와 같이 된다. 다시 한 시간 후에는 에서 ‘c’로 표시된 부분이 녹아 없어져서 과 같이 된다. 은 원래 치즈의 두 시간 후 모양을 나타내고 있으며, 남..

최단거리

문제 그래프와 출발점, 도착점이 주어질 때 출발점에서 도착점까지 이동하기 위한 최단거리를 출력하는 프로그램을 작성하시오. 예를 들어, 아래 그림에서 출발 정점이 0, 도착 정점이 10이라고 할 때, 최단거리는 3이다. 입력 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. ( 1 ≤ N ≤ 10,000, 1 ≤ M ≤ 1,000,000 ) 둘째 줄부터 간선의 정보가 주어진다. 각 줄은 두 개의 숫자 a, b로 이루어져 있으며, 이는 정점 a와 정점 b가 연결되어 있다는 의미이다. M+1 번째 줄에 대하여 출발점과 도착점의 정점 번호가 주어진다. 정점의 번호는 0번부터 N-1번까지이다. 출력 출발점에서 도착점까지 이동하기 위한 최단거리를 출력한다. 예제 입력 11 14 0 1 0 2 1 2 1 4 ..

2색칠하기(DFS/BFS)

문제 2색 칠하기란, 다음 두 조건을 만족하면서 그래프의 정점을 모두 색칠할 수 있는지 묻는 문제이다. 2개의 색이 존재한다. 인접한 두 정점은 색깔이 다르다. 그래프가 주어질 때, 2색 칠하기가 가능한지 출력하는 프로그램을 작성하시오. 예를 들어, 아래의 그래프는 2색 칠하기가 가능한 그래프이며, 정점을 색칠한 결과는 다음과 같다. 입력 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. ( 1 ≤ N ≤ 10,000, 1 ≤ M ≤ 100,000 ) 둘째 줄부터 간선의 정보가 주어진다. 각 줄은 두 개의 숫자 a, b로 이루어져 있으며, 이는 정점 a와 정점 b가 연결되어 있다는 의미이다.(0 ≤ a, b ≤ N-1) 출력 주어진 그래프에 대하여 2색 칠하기를 할 수 있으면 YES, 할 수 없으..

반응형