13460구슬탈출2
https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 빡세다. 예외케이스가 너무 많다. 말로는 쉽다 빨간구슬과 파랑구슬의 x,y좌표와 시간을 각각 큐에 넣고, 더이상 진행할 수 없을때까지 한방향으로 움직인다음, 조건에따라종료하면 된다. 근데 빡세다. 코드에 주석을 주렁주렁 달아놨더니 설명은 그만하겠다. import sys from collections import deque input=sys.stdi..
18405경쟁적 전염
https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net ㅋㅋㅋㅋㅋㅋㅋ 정신똑바로차리고풀어야겠다 말도안되는부분에서실수했다. 그냥 bfs다 큐에 넣을때 바이러스 내림차순으로만 넣어주면된다. 끝 import sys from collections import deque input=sys.stdin.readline arr=[] move=[[-1,0],[1,0],[0,-1],[0,1]] n,k=map(int,input().split..
14466소가길을건너간이유6
https://www.acmicpc.net/problem/14466 14466번: 소가 길을 건너간 이유 6 첫 줄에 N, K, R이 주어진다. 다음 R줄에는 한 줄에 하나씩 길이 주어진다. 길은 상하좌우로 인접한 두 목초지를 잇고, r c r′ c′의 형태 (행, 열, 행, 열)로 주어진다. 각 수는 1 이상 N 이하이다. www.acmicpc.net 처음엔 단순히 모든 소에 대해 bfs를 실행하여, 만나지못하는 모든 소를 구하고, 만난소+1(자신) 에다가 만나지못한 모든소를 곱해준다음, 쌍이니 2로 나눠주는식으로 구했다. 이렇게 통과를 하긴 했는데, 다른사람들정답을 보니 전부나보다 빨랐다. (1048ms나옴) 약속이 있어서 나갔다가 생각났는데, arr에 대하여 bfs로 구역을 나누고, 배열에 구역별 ..
2206 벽부수고 이동하기
https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 가장 기본적인 방식 visited 2차원배열에, 한차원을 더 추가하여 벽을 부쉈는지를 판별한다. 만일 벽을 부쉈다면, 앞으로 벽을 부수지 못할 것이고, 벽을 부수지 않았다면, 벽을 부순 대신 벽을 부순 차원으로 넘어간다. 이렇게 가장 먼저 n-1,m-1에 도착한 요소를 찾아 +1 해주고 print(해주면된다.) 2차원까지는 머리가 돌아가는데, 3차원부터는 상당히 어지럽다...