🌿Algorithm 126

✏️ [백준 14891] 톱니바퀴

1. 문제 www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 2. 접근 방법 문제에 나온대로 차근차근 구현을 하면 됩니다 연결되어 있을 경우 홀수 톱니는 홀수끼리, 짝수 톱니는 짝수끼리 같은 방향으로 회전한다는 점에서 착안해 1. 연결된 톱니 구하기 2. [1, -1, 1, -1] 인지 [-1, 1, -1, 1]인지 구하기 3. 각각의 방향에 맞추어 톱니 회전해주기 로 진행했습니다. 그리고 idx를 바꾸면 디버깅하기 어려울 것 같아 그냥 톱니를 deque로..

Algorithm/Python 2021.04.18

✏️ [백준 14889] 스타트와 링크

1. 문제 www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 2. 접근 방법 두 팀으로 나누고 각각의 능력치를 더해주면 됩니다. 두 팀이라 불리언 값을 사용해서 팀을 나눴습니다. (참고: rebas.kr/754) 괜히 어렵게 생각했다가 슬펐던 문제 ^-^ 3. 코드 python def solve(cnt, idx): global ans if idx == N: return if cnt == N//2: s1, s2 = 0, 0 for i in range(N): for j in range..

Algorithm/Python 2021.04.18

✏️ [백준 14888] 연산자 끼워넣기

1. 문제 www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 2. 접근 방법 DFS를 이용해서 모든 경우의 수를 고려해야합니다. 3. 코드 python def cal(prev, n): global max_ans, min_ans if n == N: max_ans = max(max_ans, prev) min_ans = min(min_ans, prev) return if sign[0] > 0: add = pre..

Algorithm/Python 2021.04.18

✏️ [백준 14503] 로봇 청소기

1. 문제 www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 2. 접근 방법 완전 시뮬 그 자체인 문제 근데 문제 이해하는게 너무 어려웠음 ㄹㅇ루 난독증인가 ㅠ 짜증 여튼 저 작동 로직에 대해 조금 더 풀어서 써보자면 1. 현재 위치를 청소한다. 2. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향부터 차례대로 탐색을 진행한다. ------> 현재 방향을 기준으로 왼쪽 방향이므로 현재 '북쪽 방향'인경우 북쪽을 기준으로 왼쪽인 '왼쪽 방향' 부터 '남쪽 방향'..

Algorithm/Python 2021.04.17

✏️ [백준 14502] 연구소

1. 문제 www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 2. 접근 방법 벽을 3개씩 치면서 탐색을 하는 것임다 살짝 다른 점은 안전 영역 계산을 위해서 임시로 temp라는 2차배열을 만들어서 벽 3개를 넣은 board를 복사하는 것입니다. 이 때 shallow copy가 되면 원본인 board에 영향을 끼치기 때문에 deep copy로 해주어야하는데, import 하기 귀찮아서 사실은 코테에서 라이브러리 사용해도 되는지 ? 잘 모르기 때문에 요소 하나씩 넣어줬습니다...

Algorithm/Python 2021.04.17

✏️ [백준 17136] 색종이 붙이기

1. 문제 www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 2. 접근 방법 백트래킹을 써야합니다. (그래도 python은 시간초과나서 pypy3로 풀었음 ㅜ) 1. board 탐색을 한다. 2. 숫자 1을 만날 경우 2-1. 1의 영역이 어느 정도 인지 확인한다. (붙일 수 있는 가장 큰 색종이의 크기 확인) 2-2. 가장 큰 사이즈의 색종이부터 붙여본다. 2-3. 현재 사용하려는 색종이의 사용 횟수를 확인하고 2-4. 만약 5회를 넘지 않았다면 색..

Algorithm/Python 2021.04.17

✏️ [백준 14500] 테트로미노

1. 문제 www.acmicpc.net/problem/14500 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 2. 접근 방법 매우 직관적으로 풀었습니다. 일단 N, M이 500을 넘지 않기 때문에 완탐을 해도 될 것이라는 생각을 했기 때문이죠 ^-^ 총 19가지의 경우의 수가 있지만 O(19NM)은 결국 O(NM)이기 때문임다. 3. 코드 python def isRoad(x, y): global N, M if x = M or y = N: return False r..

Algorithm/Python 2021.04.16

✏️ [백준 14499] 주사위 굴리기

1. 문제 www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net 2. 접근 방법 주사위를 돌렸을 때 생각해내는게 어려웠습니다. 초기 상태는 바닥이 1이고 위쪽이 6인데, 계속 바닥이 1이라고 했을 때 그 값에 들어갈 것은 위로 주사위를 굴릴 경우 2에 위치한 값, 아래로 주사위를 굴릴 경우 5에 위치한 값, 우측으로 주사위를 굴릴 경우 3에 위치한 값, 좌측으로 주사위를 굴릴 경우 4에 위치한 값 ..

Algorithm/Python 2021.04.16

✏️ [백준 12100] 2048(Easy)

1. 문제 www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 2. 접근 방법 1. 숫자 블록을 움직이는 단계: 상/하/좌/우 1-1. 방향에 따라 해당 열or 행을 큐에 넣는다. 1-2. 빈 공간은 큐에 담지 않는다. 1-3. 블록을 넣었다면 블록에 있던 자리는 빈 공간으로 만든다. 2. 블록을 합치는 단계 2-1. 큐에서 블록을 꺼내고 이를 순서대로 보드와 비교하면서 진행 2-2. 만약 현재 좌표보드가 빈공간이라면, 큐에 꺼낸 숫..

Algorithm/Python 2021.04.15

✏️ [백준 13460] 구슬 탈출2

1. 문제 www.acmicpc.net/problem/13460 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 2. 접근 방법 구슬 탈출 1과 동일하지만 다른게 있다면 count를 출력해야한다는 것 ! 따라서 접근 방법은 maeng2world.tistory.com/62요기를 참고해주십사 그리고 !!!!! 출력 부분에 10번이 넘어가면 -1을 출력하라고 나와있다ㅠ 꼭 정확히 읽을 것 3. 코드 python from collections import deque def move(_x, ..

Algorithm/Python 2021.04.15