본문 바로가기

Problem Solving83

[Python] 20055. 컨베이어 벨트 위의 로봇 www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net Point 내구도 0칸에는 로봇이 올라가지 못하며, 내려가기만 가능 벨트 회전 시 로봇 좌표 변경 이동하려는 칸에 로봇이 없어야하며 내구도 1이상 올라가는 위치에서 로봇이 없어야만 올림 Tip deque를 사용해 구현하면 코드가 간결해짐 로봇 좌표를 체크할 check 배열을 생성해서 계속 업데이트 해줌 메모리 (제한: MB) 129232 KB 시간 (제한: 초) 688 ms 결과 100% .. 2021. 4. 24.
[Python] 16234. 인구 이동 www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net Point 시작점을 기준으로 bfs를 통해 연합국가의 좌표를 탐색하고, 평균을 연산한다. 실제 값 반영은 이동에서 수행한다. Tip bfs의 세번째 반환값으로 flag를 세워서 인구이동이 필요없는(길이가 1)인 국가를 이동대상에 포함하지 않으므로서 연산량을 대폭 줄인다 check 이차원 배열을 선언해 한번 연합이 탐지된 국가는 모두 True 표시하여 bfs 연산이 필요없도록 한다 메모리 (제한: .. 2021. 4. 24.
[Python] 19238. 스타트 택시 www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net Point 처음엔 매 승객마다 최단거리를 구해줬고 시간초과가 났다. 그럴 필요 없이 현재 택시 위치 기준으로 맵의 최단거리를 구하고 Pop(index) 를 이용해서 연산을 반복한다. 메모리 (제한: MB) 124568 KB 시간 (제한: 초) 204 ms 결과 100% def shortest_path(taxi): global n dist = [[-1]*n for _ in .. 2021. 4. 23.
[Python] 이차원 배열과 연산 www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 포인트 두자리 이상의 수에 대해서 정렬하는 것을 고려 100초까지 확인해야 하므로 101번까지 반복해야 함 Tip 내장함수 zip(*arr) 을 사용하여 세로 줄에 대해서 정렬을 연산한다. Defaultdic 과 DeepCopy를 사용한다. 시간을 줄이기 위해 2차원 배열로 연산을 해보자 메모리 (제한: 512 MB) 129132 KB 시간 (제한: 0.5 초) 300 ms 결과 100% from .. 2021. 4. 21.
[Python] 17142. 연구소 3 www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 아무리 수정해도 계속 시간초과 됨 ㅠㅠ 다음에 재도전 메모리 (제한: MB) 0 KB 시간 (제한: 초) 0 ms 결과 시간초과 import itertools def bfs(_lst,_dist): global n,answer,vacumm lst = list(_lst) cnt = 0 infected = 0 for i in range(len(lst)): _dist[lst[i][0]][lst[i][1]] = 0 while T.. 2021. 4. 20.
[Python] 16235. 나무 재테크 www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 시간초과 (0%) def spring(x,y,z): if ground[x][y] < z: z = -z #사망 else: ground[x][y] -= z z += 1 return x,y,z def summer(x,y,z): if z < 0: ground[x][y] += abs(z)//2 def fall(x,y,z): global N child = [] for i in range(len(direct.. 2021. 4. 15.
[Python] 14503. 로봇 청소기 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제 조건에 첫행,끝행,첫열,끝열은 모두 벽으로 막혀있다고 했으므로 next_r과 next_c가 이동할 수 있는지 확인할 필요 없다. 문제를 잘 읽어보면 알고리즘 구현의 힌트를 찾을 수 있다. di = ((-1,0),(0,1),(1,0),(0,-1)) N, M = map(int, input().split()) r, c, d = map(int, input().split()) MAP = [list(.. 2021. 4. 14.
[Python] 15686. 치킨 배달 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 순열로 완전탐색하여 도시 치킨거리를 구한다. def next_perm(a): i = len(a)-1 while i > 0 and a[i-1] >= a[i]: i -= 1 if i = a[j]: j -= 1 a[i-1], a[j] = a[j], a[i-1] j = len(a)-1 while i < j: a[i], a[j] = a[j], a[i] i += 1 j -= 1 retu.. 2021. 4. 8.
[Python] 14499. 주사위 굴리기 https://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 시뮬레이션 문제이다. 키 포인트는 주사위 전개도를 배열로 치환하기 문자열 slicing으로 동서남북 이동 결과 리턴 주의할 점은 최초 입력값 받을 때 x,y가 아닌 y,x로 입력을 받아야 한다. def east(dice): return list(str(dice[0])+str(dice[5])+str(dice[2])+str(dice[4.. 2021. 4. 7.
728x90
반응형