본문 바로가기
728x90

백준 삼성 코테 파이썬28

백준 제비통신 [32337] 파이썬(Python) 코드 + 해설 Solved.ac 난이도 : 실버 1 문제입니다1. 문제 소개한양이는 자신이 키우는 M마리의 제비 중 한 마리에게 편지를 묶어 세종이에게 보내고자 한다. 하지만 제비들은 각자 특정한 기울기를 가진 직선 경로로만 이동하며, 이 직선 경로 상에 세종이가 있어야만 편지를 전달할 수 있다.한양이와 세종이를 놓을 수 있는 N개의 좌표가 주어졌을 때, 제비 통신이 가능하도록 둘을 배치하는 모든 경우의 수를 구하는 문제다. 단, 한양이와 세종이는 같은 좌표에 위치할 수 없다.2. 문제 해결 방법이 문제는 두 점을 선택하여 그 사이의 기울기가 주어진 M개의 기울기 중 하나인 경우를 세는 문제다. 하지만 모든 점 쌍을 검사하면 시간 복잡도가 O(N^2)이 되어 제한 시간 내에 해결할 수 없다.이를 효율적으로 해결하기 위.. 2024. 11. 19.
백준 아카라카 2 [32652] 파이썬(Python) 코드 + 해설 문제 소개AKARAKA(아카라카)는 거꾸로 읽어도 같은 팰린드롬이며, 접두사이자 접미사인 "AKA" 또한 팰린드롬이라는 특징을 가진 문자열이다. 여기서 목표는 AKARAKA가 연속 부분 문자열로 정확히 K번 나타나는 가장 짧은 문자열을 찾는 것이다. 연속 부분 문자열은 원래 문자열에서 시작과 끝에서 문자를 임의로 제거하여 얻을 수 있는 부분 문자열을 뜻한다.예를 들어, K=1일 때는 "AKARAKA" 자체가 정답이 되고, K=2일 때는 "AKARAKARAKA"가 조건을 만족한다. 주어진 K값에 맞춰 AKARAKA가 중첩되도록 문자열을 구성해야 한다.문제 해결 방법AKARAKA가 정확히 K번 포함되도록 가장 짧은 문자열을 만들기 위해, 문자열의 중복을 최소화해야 한다. 이를 위해 첫 번째 "AKARAKA".. 2024. 11. 14.
백준 원판 돌리기 [17822] 파이썬(Python) 코드 + 해설 문제 설명반지름이 1부터 N까지인 원판들이 바닥에 놓여 있고, 각 원판에는 M개의 정수가 적혀 있다. 원판들은 중심을 공유하며, 각 원판의 번호는 작은 것부터 큰 것까지 1부터 N까지이다. 각 원판의 위치는 (i,j)로 표현되며, i는 원판의 번호, j는 원판 위의 숫자 위치이다. 원판들은 독립적으로 회전할 수 있으며, 회전은 시계 방향 또는 반시계 방향으로 이루어진다. 회전 후에는 다음과 같은 작업을 수행한다: 인접하면서 수가 같은 것들을 모두 찾는다. 인접한 위치는 다음과 같다: 같은 원판에서 양 옆에 있는 숫자들 같은 위치의 위아래 원판 숫자들 인접하면서 수가 같은 것이 있으면, 해당 수들을 지운다 (0으로 만든다). 없으면, 원판에 적힌 수들의 평균을 구하고, 평균보다 큰 수에서 1을 빼고, 작은.. 2024. 11. 8.
백준 새로운 게임2 [17837] 파이썬(Python) 코드 + 해설 문제 설명재현이는 체스판과 말을 이용하여 새로운 게임을 만들었다. 이 게임은 크기가 N×N인 체스판에서 진행되며, 말은 총 K개가 사용된다. 말은 원판 모양이며, 하나의 말 위에 다른 말을 올릴 수 있다. 체스판의 각 칸은 흰색(0), 빨간색(1), 파란색(2) 중 하나로 색칠되어 있다.게임은 체스판 위에 말을 놓고 시작한다. 말은 1번부터 K번까지 번호가 매겨져 있고, 이동 방향도 미리 정해져 있다. 이동 방향은 오른쪽(1), 왼쪽(2), 위쪽(3), 아래쪽(4) 중 하나이다.각 턴은 1번 말부터 K번 말까지 순서대로 이동시키는 것이다. 한 말이 이동할 때, 그 말 위에 다른 말이 있으면 함께 이동한다. 말의 이동 규칙은 다음과 같다.이동하려는 칸이 흰색인 경우:그 칸으로 이동한다.이동하려는 칸에 말이.. 2024. 11. 7.
백준 게리맨더링 2 [17779] 파이썬(Python) 코드 + 해설 문제 설명재현시는 𝑁 × 𝑁  크기의 격자로 표현되며, 각 격자는 구역을 의미합니다. 각 구역에는 인구수가 주어집니다. 시장은 공정한 선거구 획정을 위해 다음과 같은 규칙으로 다섯 개의 선거구로 나누려고 합니다.기준점 ( 𝑥,𝑦 )와 경계의 길이 𝑑1,𝑑2를 정합니다. (1≤𝑥경계선을 긋습니다:1번 경계선: (𝑥,𝑦)부터 (𝑥+𝑑1 , 𝑦−𝑑1) 까지 대각선2번 경계선: (𝑥,𝑦)부터 (𝑥+𝑑2,  𝑦+𝑑2) 까지 대각선3번 경계선: (𝑥+𝑑1,𝑦−𝑑1)부터  𝑥+𝑑1+𝑑2, 𝑦−𝑑1+𝑑2)까지 대각선4번 경계선: (𝑥+𝑑2,𝑦+𝑑2) 부터 ( 𝑥+𝑑2+𝑑1, 𝑦+𝑑2-𝑑1)까지 대각선경계선과 그 안에 포함된 구역은 5번 선거구로 설정.. 2024. 11. 6.
백준 연구소 3 [17142] 파이썬(Python) 코드 + 해설 문제 설명인체에 치명적인 바이러스를 연구하던 연구소에 누군가 침입하여 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 처음에는 모든 바이러스가 비활성 상태이며, 활성 상태인 바이러스는 상하좌우로 인접한 모든 빈 칸으로 동시에 복제되어 퍼지며, 1초가 걸린다.우리는 연구소의 바이러스 위치 중 M개를 선택하여 활성 상태로 변경하려고 한다. 연구소는 N×N 크기의 정사각형이며, 각 칸은 빈 칸(0), 벽(1), 바이러스 위치(2)로 이루어져 있다.활성 바이러스가 비활성 바이러스가 있는 칸으로 가면, 해당 바이러스는 활성 상태로 변한다. 모든 빈 칸에 바이러스를 퍼뜨리는 데 걸리는 최소 시간을 구하는 것이 목표이다.문제 접근이 문제는 다음과 같은 특징을 가진다:바이러스는 동시에 퍼진다... 2024. 11. 6.
백준 이차원 배열과 연산 [17140] 파이썬(Python) 코드 + 해설 문제 설명크기가 3×3인 배열 A가 있다. 배열의 인덱스는 1부터 시작한다. 매 초마다 배열에 연산이 적용된다.R 연산: 배열 A의 모든 행에 대해서 정렬을 수행한다. 행의 개수 ≥ 열의 개수인 경우에 적용된다.C 연산: 배열 A의 모든 열에 대해서 정렬을 수행한다. 행의 개수 각 행 또는 열에 있는 수를 정렬하려면, 각각의 수가 몇 번 나왔는지 알아야 한다. 그 다음, 수의 등장 횟수가 커지는 순으로, 그러한 것이 여러 개면 수가 커지는 순으로 정렬한다. 그 다음에는 배열 A에 정렬된 결과를 다시 넣어야 한다. 정렬된 결과를 배열에 넣을 때는, 수와 등장 횟수를 모두 넣으며, 순서는 수가 먼저이다.예를 들어, [3,1,1]에는 3이 1번, 1이 2번 등장한다. 따라서, 정렬된 결과는 [3,1,1,2]가.. 2024. 11. 5.
백준 낚시왕 [17143] 파이썬(Python) 코드 + 해설 문제 설명낚시왕은 크기가 R×C인 격자판에서 상어 낚시를 한다. 격자판의 각 칸에는 상어가 있을 수 있으며, 상어는 위치 (r,c), 속력 s, 이동 방향 d, 크기 z를 가진다.낚시왕은 첫 번째 열의 왼쪽에 위치하며, 매 초마다 오른쪽으로 한 칸씩 이동한다. 매 시간마다 다음과 같은 일이 발생한다:낚시왕이 이동한다.낚시왕이 있는 열에서 가장 가까운 상어를 잡는다. 잡은 상어는 격자판에서 사라진다.상어들이 이동한다. 각 상어는 자신의 속력과 방향에 따라 이동하며, 격자판의 경계를 넘으면 방향을 반대로 바꾸며 이동을 계속한다.같은 칸에 여러 상어가 있다면 크기가 가장 큰 상어만 남고 나머지는 모두 사라진다.낚시왕이 잡은 상어 크기의 합을 구하는 것이 목표이다.입력 조건첫째 줄에 격자판의 크기 R,C와 상어.. 2024. 11. 4.
백준 미세먼지 안녕! [17144] 파이썬(Python) 코드 + 해설 문제 분석구사과는 방에 있는 미세먼지를 제거하기 위해 공기청정기를 설치하려고 한다. 방은 R×C 크기의 격자판으로 이루어져 있고, 각 칸에는 미세먼지가 있을 수 있다. 공기청정기는 항상 첫 번째 열에 설치되어 있으며, 두 개의 연속된 행을 차지한다.1초 동안 다음과 같은 일이 순서대로 일어난다:미세먼지 확산:미세먼지는 인접한 네 방향으로 확산된다.확산되는 양은 현재 칸의 미세먼지 양을 5로 나눈 값의 몫이다 (즉, ⌊Ar,c/5⌋).공기청정기가 있거나 칸이 없으면 그 방향으로 확산되지 않는다.확산된 후 남은 미세먼지의 양은 Ar,c−(확산된 양×확산된 방향의 개수)이다.공기청정기 작동:위쪽 공기청정기는 반시계 방향으로 순환한다.아래쪽 공기청정기는 시계 방향으로 순환한다.바람이 불면서 미세먼지가 한 칸씩 .. 2024. 11. 3.
728x90