코딩테스트(89)
-
백준 별 찍기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 로그 함수 때문에 애 먹었다 왜 그러는거야? 왜 log_3(81)은 4.0이고 log_3(243)은 4.99 라서 날 힘들게 만든거야! int가 아니라 round를 써야 했다 재귀함수를 사용했다. [이전 모양 사각형] [이전 모양 사각형] [이전 모양 사각형] [이전 모양 사각형] [ N/3 빈 정사각형] [이전 모양 사각형] [이전 모양 사각형] [이전 모양 사각형] ..
2021.09.29 -
백준 최종 순위 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/3665 3665번: 최종 순위 올해 ACM-ICPC 대전 인터넷 예선에는 총 n개의 팀이 참가했다. 팀은 1번부터 n번까지 번호가 매겨져 있다. 놀랍게도 올해 참가하는 팀은 작년에 참가했던 팀과 동일하다. 올해는 인터넷 예선 본부에 www.acmicpc.net '?'를 출력하는 경우는 이해가 안 돼서 구현을 못 했는데 통과되어 버렸다... 그래프를 사용하지 않고 dictionary를 사용했다. key는 팀 번호, value는 그 팀보다 순위가 낮은 팀 번호들의 목록 작년 순위에 따라 이 dictionary를 초기화하고, 순위가 바뀐 정보가 들어오면 이에 따라 정보를 업데이트한다. 총 팀의 개수를 M이라고 할 때, 업데이트 후에 각 value의 길..
2021.09.29 -
백준 감시 피하기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/18428 18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net 백준 연구소 문제와 유사하게 풀이했습니다. school엔 입력으로 받아들인 학교의 상태, teachers에는 모든 선생님들의 위치 좌표, blank에는 빈 곳의 위치 좌표를 저장합니다. teacher_detect 함수에선 한 명의 선생님이 감시할 수 있는 범위를 확인합니다. 입력으로 주어진 선생님의 위치 좌표에 대해, 그 좌표의 상하좌우를 순서대로 살펴봅니다. 현재 방향으로 이동하면서, ..
2021.09.22 -
백준 연구소 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 최적의 벽 세우기를 알고리즘으로 생각하긴 너무 어려운 것 같아서.. 그냥 모든 combination으로 계산해보는 걸로 코드를 짜봤다. Python3으로는 시간초과고 PyPy3로는 통과라서 약간 찜찜하지만~ 그래도~~ 입력으로 주어진 연구소를 graph, 연구소에서 벽을 세울 수 있는 빈 곳의 좌표는 blank, 바이러스의 좌표는 virus에 저장했다. compute_safe 함수로는 입력으로 주어진 연구소 ..
2021.09.08 -
백준 연산자 끼워넣기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 입력으로 주어진 수와 연산자를 저장합니다. 주어진 연산자 조건에 따라 가능한 모든 중복없는 배열을 permutated_operators에 저장하고, 각 배열마다 계산한 값을 vals에 저장합니다. 음수로 나누기를 할 땐 문제에서 주어진 조건에 맞게 변형 후 계산합니다. 이렇게 구한 값들중 최댓값과 최솟값을 차례로 프린트합니다. import s..
2021.09.08 -
백준 경쟁적 전염 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 시험관의 상태를 n초마다 업데이트하여 풀이했습니다. 각 바이러스의 위치는 딕셔너리로 저장했고, 딕셔너리의 value는 큐로 만들어 처리 완료된 경우 pop할 수 있도록 했습니다. contaminate 함수를 통해 매 초마다 시험관을 업데이트 합니다. 1~K번 바이러스까지 차례대로 딕셔너리에 해당 바이러스 번호가 key로 있으면 해당 key의 모든 value들(좌표들)..
2021.09.08