Simulation 5

[Python/파이썬] - 백준(BOJ) 11559번 : Puyo Puyo

https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo 총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. www.acmicpc.net 주어진 조건에 맞게 구현하는 문제입니다. 같은 색깔이 4개 이상 확인 하는 코드를 Check 함수로 만들었고 Check한 원소들을 '.'으로 바꿔주는 코드를 Pop 함수로 만들었고 빈칸을 채우는 코드를 Gravity로 만들었습니다. 우선 Check 함수에서는 DFS로 탐색하며 같은 색깔의 원소를 q라는 배열에 담아둡니다. 이후 함수가 종료되면 q 배열을 Puyo라는 dic..

백준(BOJ) 2022.06.16

[Python/파이썬] - 백준(BOJ) 17499번 : 수열과 시프트 쿼리

https://www.acmicpc.net/problem/17499 17499번: 수열과 시프트 쿼리 첫 번째 줄에 Q개의 연산을 차례대로 수행한 후 a1, a2, …, aN 을 공백을 사이에 두고 출력합니다. www.acmicpc.net 주어진 쿼리에 맞게 배열에 더하기를 하거나 시프트를 하는 문제이다. 단순 append, pop을 이용하면 시간초과가 나오므로 포인터를 활용해야 한다. 처음 p를 index 0으로 잡고 오른쪽으로 시프트하면 -, 왼쪽으로 시프트하면 + 하고 그 p값을 배열의 첫번째 인덱스라고 생각하고 더하고, 프린트하면 된다. 처음에 시간초과가 떠서 문제를 확인해보니 input에서 시간을 너무 잡아먹는 것 같아 sys 라이브러리의 sys.stdin.readline을 이용해서 input에..

백준(BOJ) 2022.06.06

[Python/파이썬] - 백준(BOJ) 16235번 : 나무 재테크

https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 골드4 주제에 시간초과 최적화 때문에 매우 매우 골치아팠던 문제. Pypy3으로 컴파일 해야한다. 우선 오답 풀이로는 봄을 처리할 때 tree를 3중배열 처리 하지 않고 tree[index]에 age, y, x를 저장하여 모든 tree 탐색을 하며 원소를 pop하고 잠시 temp 배열에 저장한 후 봄 처리가 끝나면 다시 tree에 저장했다. 이렇게 하면 pop과 append를 원소..

백준(BOJ) 2022.06.03

[Python/파이썬] - 백준(BOJ) 3709번 : 레이저빔은 어디로

https://www.acmicpc.net/problem/3709 3709번: 레이저빔은 어디로 레이저박스라는 게임은 정사각형 모양의 n x n 보드에서 진행한다. (체스판을 상상하면 된다) 레이저박스의 임의의 칸마다 우향우 거울이라는 장치가 설치되어 있고, 마지막으로 레이저 한개가 www.acmicpc.net vector를 설정하여 이동하며 우향우 거울이 있는 경우 vector를 변경하여 탈출할 때 까지 시뮬레이션 하는 문제이다. mirror라는 n*n 배열을 생성한 후 우향우 거울이 있는 위치를 저장해준다. 이후 zero index를 위한 값 변경을 한 후 dy, dx 배열을 상, 우, 하, 좌 순서로 배치한다. 그리고 시작점 위치를 토대로 방향을 설정한 후 거울이 있는지 체크해가며 이동하면 된다. ..

백준(BOJ) 2022.06.03

[Python/파이썬] - 백준(BOJ) 8972번 : 미친 아두이노

https://www.acmicpc.net/problem/8972 8972번: 미친 아두이노 요즘 종수는 아두이노를 이용해 "Robots"이라는 게임을 만들었다. 종수는 아두이노 한대를 조정하며, 미친 아두이노를 피해다녀야 한다. 미친 아두이노는 종수의 아두이노를 향해 점점 다가온다. www.acmicpc.net 시간초과를 고치기 위해 여러가지 시도했더니 코드가 더러워서 주석으로만 설명. 나중에 리팩토링을 한번 해야겠다. import sys input = sys.stdin.readline def crazy(q): nq = [] same = [] nm = [['.' for _ in range(n)] for _ in range(m)] for ry, rx in q: # 로봇 이동 v = [y-ry, x-rx]..

백준(BOJ) 2022.05.20