백준 25

[백준] 17144 - 미세먼지 안녕!(파이썬, Python)

https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 해당 문제는 문제의 설명대로 1) 미세먼지를 확산시킨다. 2) 공기 청정기를 작동시킨다. 이 두 가지를 구현하는 문제이다. 저는 이 문제를 Python3로 제출할 때 시간 초과가 났습니다. 제 코드에 비효율적인 부분이 있는 거 같습니다. 하지만 구현 문제인 만큼 정확성을 확인하고 싶었고 아래의 글을 참고한 후 PyPy3로 제출을 했습니다. https://www.acmicpc.net/board/v..

PS/Python 2021.05.30

[백준] 17140 - 이차원 배열과 연산(파이썬, Python)

https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 해당 문제는 조건에 따라 각 행 또는 열에 연산을 반복하면서 주어진 위치에 지정한 값이 있는지 확인하는 문제입니다. 저는 이 문제를 풀 때 각 행과 열의 최대 길이가 100이 된다는 것에 집중했습니다. 처음부터 100 X 100 크기의 배열을 이용해서 작업을 했습니다.(행과 열의 길이를 맞추는 작업을 간단히 하기 위해 위와 같이 했지만 이것 때문에 속도가 느려진 게 아닌가 생각이 듭니..

PS/Python 2021.05.19

[백준] 14502 - 연구소(파이썬, Python)

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 이 문제는 3개의 벽을 세우고 바이러스가 확산된 후 남아 있는 안전 영역을 계산하는 문제입니다. 저는 이 문제를 풀 때 새로운 벽의 위치를 선정하는 방법에 대한 많은 고민을 했습니다. 결론적으로 기발한 방법은 생각하지 못했고 Combination을 이용했습니다. 해당 문제에 대한 저의 접근법은 아래와 같습니다. 접근법 1. 연구소의 빈 곳 중 조합을 이용해서 벽이 세워질 후보 장소 3곳을 선정하고 벽을 세웁니..

PS/Python 2021.05.19

[백준] 3190 - 뱀(파이썬, Python)

www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 해당 문제는 뱀 머리의 위치를 이동시키며 뱀의 머리가 자신의 몸 또는 벽에 부딪힐 때까지의 시간을 계산하는 것이 목적입니다. 접근법 1 종료 조건에 맞게 게임 중단시키기 게임의 종료 조건은 두 가지가 있습니다. 1. 뱀의 머리가 벽에 부딪혔을 때 종료됩니다. 2. 뱀의 머리가 자신의 몸에 부딪혔을 때 종료됩니다. 저는 위의 조건을 간단히 확인하기 위해 아래와 같은 전략을 세웠습니다. 1. 벽과 뱀의 몸 위치에는 -1을..

PS/Python 2021.05.03

[백준] 5052- 전화번호 목록 (파이썬, Python)

https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 문제 전화번호 목록이 주어진다. 이때, 이 목록이 일관성이 있는지 없는지를 구하는 프로그램을 작성하시오. 전화번호 목록이 일관성을 유지하려면, 한 번호가 다른 번호의 접두어인 경우가 없� www.acmicpc.net 문제를 보고 전화번호를 길이를 기준으로 정렬한 후 더 긴 번호와 접두어를 비교하는 방법을 생각했다. 적용해 보았다. t = int(input()) answer = [] for i in range(t): flag = "YES" n = int(input()) call_list = [] for j in range(n): call_num = str(input()) call_list.append(call_nu..

PS/Python 2020.07.21