시뮬레이션 4

[시뮬레이션] 1244 스위치 켜고 끄기

10. 1244 스위치 켜고 끄기 10.1. 문제유형 시뮬레이션 10.2. 해결과정 여성일 경우와 남성일 경우를 처리하는 함수를 2개 구성했다. 남성의 경우 받은 번호의 배수에 해당하는 스위치를 Turnoff한다. 배수임을 확인할 때는 입력받은 값을 그대로 사용하되, 인덱싱할 때는 -1 처리한다. 여성의 경우 받은 번호의 양 옆 대칭인 스위치를 Turnoff한다. 입력받은 값을 -1 처리 후 왼쪽, 오른쪽 값을 인덱싱한다. 10.3. 소스코드 n=int(input()) switch=list(map(int,input().split())) s=int(input()) students=[list(map(int, input().split())) for _ in range(s)] def male(num): for ..

알고리즘 2021.09.08

[시뮬레이션] 16236 아기상어

9. 16236 아기상어 9.1. 문제유형 시뮬레이션 9.2. 해결과정 고려할 조건이 많은 까다로운 문제였다. 상어 위치를 찾고, BFS 탐색을 수행한다. 먹을 물고기가 있는지 없는지를 확인한다. 같은 거리라면 가장 위 물고기를, 그런 물고기가 여러마리라면 왼쪽 물고기를 먼저 먹는다. 상어의 크기 변화 조건 (먹은 물고기 수)을 체크한다. 먹이를 먹은 후, 새로운 위치 탐색을 위해 큐와 방문장소를 초기화한다. 먹이를 먹은 후, 현재까지의 시간을 저장한다. 9.3. 소스코드 from collections import deque dxs=[-1,1,0,0] dys=[0,0,-1,1] def BFS(x, y): Q, visited=deque([(x,y)]), set([(x,y)]) time=0 shark=2 e..

알고리즘 2021.09.08

[시뮬레이션] - 14503 로봇 청소기

7. 14503 로봇 청소기 7.1. 문제유형 시뮬레이션 7.2. 풀이과정 3가지를 정확히 구현해야 해결할 수 있었다. 좌표 이동을 기존 좌표계와 반대로 구현해야한다. 좌표 이동 시 방향 d가 현재 기준 왼쪽부터 탐색하도록 구현해야 한다. 방향 d에 대해 후진 위치를 정확히 지정해주어야 한다. 1,2번까지는 제대로 구현했으나, 3번 제대로 지정하지 못해 오랜 시간이 소요되었다. 7.3. 소스코드 n, m = map(int, input().split()) r,c,d = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] visited = [[0]*m for _ in range(n)] dx=[-1,0,1,0..

알고리즘 2021.09.07

시뮬레이션 - 13335 트럭 / 14499 주사위굴리기

5. 13335 트럭 5.1. 문제유형 시뮬레이션 5.2. 풀이과정 주어진 로직을 따라가며 그대로 구현하였다. 두 가지 조건을 체크하며, 트럭을 통과시켰다. 다리가 꽉 차 있는가? 다리의 무게가 버틸 수 있는가? 다리가 꽉 차 있지 않고, 트럭 무게를 감당할 수 있으면 트럭을 통과시킨다. 다리 위의 트럭 초를 증가시키며 1칸씩 전진시킨다. ⭐ 주의할 점은 다리를 완전히 통과할 때, 동시에 다음 트럭이 들어와야 하는 경우를 고려해야한다. 따라서 미리 트럭을 제거해주었으므로, 마지막 소스코드에 1초를 추가해주었다. 5.3. 소스코드 from collections import deque n, w, l = map(int, input().split()) trucks = deque(list(map(int, inpu..

알고리즘 2021.09.06