🌿Algorithm/Python 116

✏️ [백준 15683] 감시

1. 문제 www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 2. 접근 방법 visited를 불리언 값을 갖는 2차 리스트로 만들어줘서, 감시 불가능한 위치의 value를 False로, 그 외에 나머지 것 (감시 가능한 위치, 벽, cctv)는 모두 True로 만들어준다. 사실 visited 안해줘도 되는데 탐색 없이 바로 답을 도출하고자 바로바로 cnt를 갱신하기 위해 visited를 만들어준 것 ! 1. cctv의 위치를 리스트에 담아준다. (5..

Algorithm/Python 2021.04.18

✏️ [백준 15685] 드래곤 커브

1. 문제 www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 2. 접근 방법 아 진짜 세대 이용해서 푸는게 진짜 진자 지ㄴ짜로 어려웠다 흑흑흑흑 너무 많은 시간을 지체해서 결국 이 블로그들을 참고했다. https://rebas.tistory.com/793 BOJ 15685 · 드래곤 커브 알고리즘 분류 : 시뮬레이션 문제에 주어진 조건 그대로 드래곤 커브를 만들어서 사각형의 개수를 세는 문제다. 드래곤 커브를 만드는 규칙을 파악해야 ..

Algorithm/Python 2021.04.18

✏️ [백준 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