python

문제https://www.acmicpc.net/problem/14891백준 문제집 - 0x0D강 - 시뮬레이션 알고리즘: 시뮬레이션풀이총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴가 1번, 그 오른쪽은 2번, 그 오른쪽은 3번, 가장 오른쪽 톱니바퀴는 4번이다.이때, 톱니바퀴를 총 K번 회전시키려고 한다. 톱니바퀴의 회전은 한 칸을 기준으로 한다. 회전은 시계 방향과 반시계 방향이 있고, 아래 그림과 같이 회전한다.톱니바퀴를 회전시키려면, 회전시킬 톱니바퀴와 회전시킬 방향을 결정해야 한다. 톱니바퀴가 회전할 때, 서로 맞닿은 극에 따라서 옆에 있는 톱니바퀴..
문제https://www.acmicpc.net/problem/2573백준 문제집 - 0x09강 - BFS 알고리즘: BFS풀이한 덩어리의 빙산이 주어질 때, 이 빙산이 두 덩어리 이상으로 분리되는 최초의 시간(년)을 구하는 프로그램을 작성하시오. 그림 1의 빙산에 대해서는 2가 답이다. 만일 전부 다 녹을 때까지 두 덩어리 이상으로 분리되지 않으면 프로그램은 0을 출력한다. 2636: 치즈와 비슷한 문제다.차이가 있다면 치즈 문제에선 치즈의 겉표면(바깥부분)만 녹았으나, 빙산 문제에선 바다와 닿는 부분은 모두 녹는범위에 해당된다. 빙산이 두 덩어리가 되거나, 모두 녹을때까지 while문으로 체크한다.각 턴마다 visited를 새로 생성하고, 아직 방문하지 않은 좌표일 경우 bfs(x, y)를 실행하여 덩..
문제https://www.acmicpc.net/problem/16987백준 문제집 - 0x0C강 - 백트래킹 알고리즘: 백트래킹, 브루트포스풀이계란을 치는 과정을 설명하면 아래와 같다.1. 가장 왼쪽의 계란을 든다.2. 손에 들고 있는 계란으로 깨지지 않은 다른 계란 중에서 하나를 친다. 단, 손에 든 계란이 깨졌거나 깨지지 않은 다른 계란이 없으면 치지 않고 넘어간다. 이후 손에 든 계란을 원래 자리에 내려놓고 3번 과정을 진행한다.3. 가장 최근에 든 계란의 한 칸 오른쪽 계란을 손에 들고 2번 과정을 다시 진행한다. 단, 가장 최근에 든 계란이 가장 오른쪽에 위치한 계란일 경우 계란을 치는 과정을 종료한다.이 과정을 통해 최대한 많은 계란을 깨는 것이 앞으로 인범이가 매일 아침마다 풀게 될 퍼즐이다..
문제https://www.acmicpc.net/problem/18808백준 문제집 - 0x0D강 - 시뮬레이션 알고리즘: 브루트포스, 시뮬레이션풀이주어진 스티커들을 조건에 맞게 붙여나가는 문제다.겹쳐서 붙이지 말것.왼쪽 상단, 오른쪽 상단, 왼쪽 하단, 오른쪽 하단 순으로 우선순위를 두고 붙일것.붙일 수 없는 상황이라면 스티커를 90도씩 회전시켜본 후 다시 시도잘 보면 '최대한 많이 붙일수있는 경우'를 구하는게 아니다.단순히 1번 스티커부터 K번 스티커까지 붙일 수 있는 경우에만 붙여나가면 된다. 먼저 각 스티커들을 리스트에 저장한 뒤 하나씩 순회한다.스티커를 0º(기본), 90º, 180º, 270º 씩 돌려가며 방향 우선순위에 맞춰 노트북에 붙일 수 있는지 체크한다.붙일 수 있다면 붙인 후 바로 다음..
문제https://www.acmicpc.net/problem/15663백준 문제집 - 0x0C강 - 백트래킹 알고리즘: 백트래킹풀이- N개의 자연수 중에서 M개를 고른 수열한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.수열은 사전 순으로 증가하는 순서로 출력해야 한다. 한 숫자를 중복선택할 순 없으나 같은 숫자가 여러개 주어질수도 있다.예를들어 [1, 2, 4, 4]일때, 세번째의 4와 네번째의 4는 다른 4다.단, 완성된 수열은 중복되어선 안된다. 사실 모든 숫자가 최대 하나씩만 주어진다면 15654: N과 M (5) 문제와 동일하다.하지만 이번 문제도 if nums[i] in ret과 같이 작성하게 되면 ..
문제https://www.acmicpc.net/problem/9328백준 문제집 - 0x09강 - BFS 알고리즘: BFS풀이상근이는 1층 빌딩에 침입해 매우 중요한 문서를 훔쳐오려고 한다. 상근이가 가지고 있는 평면도에는 문서의 위치가 모두 나타나 있다. 빌딩의 문은 모두 잠겨있기 때문에, 문을 열려면 열쇠가 필요하다. 상근이는 일부 열쇠를 이미 가지고 있고, 일부 열쇠는 빌딩의 바닥에 놓여져 있다. 상근이는 상하좌우로만 이동할 수 있다.상근이가 훔칠 수 있는 문서의 최대 개수를 구하는 프로그램을 작성하시오.  바로 앞전의 문제 11967: 불켜기 문제와 비슷한 느낌이다.물론 불켜기는 각 방에서 켤 수 있는 스위치들을 명시해놓은 상태이기도 하고, 구하고자 하는 값이 '불을 켤 수 있는 방' 자체였기 때..
miwat
'python' 태그의 글 목록 (12 Page)