본문 바로가기

Coding Test/BOJ23

[백준] 17144 - 미세먼지 안녕! [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 17144번: 미세먼지 안녕! 1. 문제 R*C 크기의 격자판에서 공기청정기는 항상 1번 열에 2칸을 차지하고, 나머지 칸에는 미세먼지의 양이 나타난다. 1초 동안 아래 적힌 일이 순서대로 일어난다. 미세먼지가 확산된다. 확산은 미세먼지가 있는 모든 칸에서 동시에 일어난다. (r, c)에 있는 미세먼지는 인접한 네 방향으로 확산된다. 인접한 방향에 공기청정기가 있거나, 칸이 없으면 그 방향으로는 확산이 일어나지 않는다. 확산되는 양은 Ar,c/5이고 소수점은 버린다. (r, c)에 남은 미세먼지의 양은 Ar,c - (Ar,c/5)×(확산된 방향의 개수) 이다. 공기청정기가 작동한다. 공기청정기에서는 바람이 나온다. 위쪽 공기청정기의 바람은 반시계.. 2021. 11. 22.
[백준] 17143 - 낚시왕 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 17143번: 낚시왕 1. 문제 R*C 크기의 격자판에서 낚시왕은 가장 왼쪽 열부터 오른쪽 끝까지 이동한다. 낚시왕이 오른쪽으로 한 칸 이동한다. 낚시왕이 있는 열에 있는 상어 중에서 땅과 제일 가까운 상어를 잡는다. 상어를 잡으면 격자판에서 잡은 상어가 사라진다. 상어가 이동한다. 상어는 입력으로 주어진 속도로 이동하고, 속도의 단위는 칸/초이다. 상어가 이동하려고 하는 칸이 격자판의 경계를 넘는 경우에는 방향을 반대로 바꿔서 속력을 유지한채로 이동한다. 상어가 이동을 마친 후 한 칸에 상어가 두 마리 이상 있을 경우 크기가 가장 큰 상어만 남는다. 낚시왕이 잡은 상어 크기의 합을 출력한다. 2. 풀이 시뮬레이션를 이용한 문제 풀이 낚시왕이 상.. 2021. 11. 22.
[백준] 17142 - 연구소 3 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 17142번: 연구소 3 1. 문제 N*N 크기의 연구소는 빈 칸과 벽 그리고 M개의 활성 바이러스로 이루어져 있다. 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 어떤 바이러스를 놓았을 때, 바이러스가 퍼지는 최소 시간을 출력한다. 2. 풀이 브루트포스와 BFS를 이용한 문제 풀이 브루트포스를 통해 M개의 바이러스를 선택한다. BFS를 통해 바이러스의 전파 최대 시간을 구한다. 3. 코드 from collections import deque N, M = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(N)] selceted = [.. 2021. 11. 22.
[백준] 17141 - 연구소 2 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 17141번: 연구소 2 1. 문제 N*N 크기의 연구소는 빈 칸과 벽 그리고 M개의 바이러스로 이루어져 있다. 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 어떤 바이러스를 놓았을 때, 바이러스가 퍼지는 최소 시간을 출력한다. 2. 풀이 브루트포스와 BFS를 이용한 문제 풀이 브루트포스를 통해 M개의 바이러스를 선택한다. BFS를 통해 바이러스의 전파 최대 시간을 구한다. 3. 코드 from collections import deque import sys N, M = map(int, input().split()) arr = [list(map(int, input().split())) for _ in range(N)] chk, v.. 2021. 11. 22.
[백준] 17140 - 이차원 배열과 연산 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 17140번: 이차원 배열과 연산 1. 문제 크기가 3×3인 배열 A가 있다. 1초가 지날때마다 배열에 연산이 적용된다. R 연산: 배열 A의 모든 행에 대해서 정렬을 수행한다. 행의 개수 ≥ 열의 개수인 경우에 적용된다. C 연산: 배열 A의 모든 열에 대해서 정렬을 수행한다. 행의 개수 < 열의 개수인 경우에 적용된다. 정렬은 수의 등장 횟수가 커지는 순으로, 그러한 것이 여러가지면 수가 커지는 순으로 정렬한다. 행 또는 열의 크기는 가장 큰 행 또는 열을 기준으로 크기를 정하고, 행 또는 열의 크기가 커진 곳에는 0이 채워진다. A[r][c]에 들어있는 값이 k가 되기 위한 연산의 최소 시간을 출력한다. 100초가 지나도 A[r][c] = .. 2021. 11. 22.
[백준] 16236 - 아기 상어 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 16236번: 아기 상어 1. 문제 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 물고기와 아기 상어는 모두 크기를 가지고 있고, 처음 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한칸씩 이동한다. 아기 상어는 자신 보다 큰 물고기 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어의 이동 결정 방법은 아래와 같다. 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상어는 엄마 상어에게 도움을 요청한다. 먹을 수 있는 물고기가 1마리라면, 그 물고기를 먹으러 간다. 먹을 수 있는 물고기가 1마리보다 많다면, 거리가 가장 가까운 물고기를 먹으러 간다. 거리는 아기 상어가 있는 칸에서 .. 2021. 11. 22.
[백준] 16235 - 나무 재테크 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 16235번: 나무 재테크 1. 문제 양분의 정보가 들어있는 N*N크기의 땅에 M개의 나무를 심는다. 가장 처음에 양분은 모든 칸에 5만큼 들어있다. 나무는 한 칸을 차지하며, 한 칸에는 여러 나무가 심어져 있을 수도 있다. 봄에는 나무가 자신의 나이만큼 양분을 먹고, 나이가 1 증가한다. 만약 한 칸에 여러 나무가 있다면, 나이가 어린 나무부터 양분을 먹는다. 양분이 부족한 나무는 즉시 죽는다. 여름에는 봄에 죽은 나무가 양분이 된다. 죽은 나무의 나이를 2로 나눈 값이 해당 칸에 양분으로 추가된다. (소수점 아래는 버림) 가을에는 나이가 5의 배수인 나무가 인접한 8개의 칸에 나이가 1인 나무를 번식한다. K년이 지난 후 살아남은 나무의 수를.. 2021. 11. 22.
[백준] 16234 - 인구 이동 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 16234번: 인구 이동 1. 문제 N*N크기의 땅이 있고, 각각의 땅에는 나라가 존재한다. 각 나라의 칸에는 인구 수가 적혀있고, 인접한 나라 사이에는 국경선이 존재한다. 인구 이동은 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루동안 연다. 위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다. 국경선이 열려있어 인접한 칸만을 이용해 이동할 수 있으면, 그 나라를 오늘 하루 동안은 연합이라고 한다. 연합을 이루고 있는 각 칸의 인구수는 (연합의 인구수) / (연합을 이루고 있는.. 2021. 11. 22.
[백준] 15686 - 치킨 배달 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 15686번: 치킨 배달 1. 문제 N*N 도시의 각 칸은 빈 칸(0), 집(1), 치킨집(2) 중 하나이다. 치킨 거리는 집이 (r1, c1)이고, 치킨집이(r2, c2)일 때, |r1-r2| + |c1-c2| 이다. 최대 M개의 치킨집을 고르고, 도시의 치킨 거리의 최솟값을 출력한다. 2. 풀이 브루트포스를 이용한 문제 풀이 집과 치킨집 위치를 저장한다. 브루트포스를 통해 모든 경우의 유효한 치킨집 조합을 통해 치킨거리의 최솟값을 구한다. 3. 코드 N, M= map(int, input().split()) B = [list(map(int, input().split())) for _ in range(N)] home, chicken, v = [].. 2021. 11. 22.