코드(9)
-
백준 미세먼지 안녕! 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 미세먼지의 양과 그 위치를 확인하는 함수, 미세먼지의 확산을 구현하는 함수, 공기청정기의 윗부분과 아랫부분의 확산을 구현하는 함수를 만들어 매 초마다 이 함수들을 실행해주었습니다. 미세먼지의 양과 위치를 확인하는 함수는 전체 방의 원소를 확인하면서 원소가 0보다 크면 위치와 양을 튜플로 저장했습니다. (행, 열, 미세먼지 양) 미세먼지의 확산을 구현하기 위해서 상하좌우가 방 안에 있고, 공기청정..
2021.11.03 -
백준 색종이 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/2563 2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 100*100 크기의 0으로 이루어진 행렬을 만들고 이를 도화지로 생각했습니다. 사각형 입력이 주어질 때마다 그 부분을 1로 채워줬고, 0에서 1로 바뀌는 순간 count를 하나씩 증가해줬습니다. 최종 count를 답으로 프린트했습니다. import sys def fill_square(square, board, answer): x,y = square # 사각형의 범위 for i in range(x, x+10..
2021.11.03 -
볼링공 고르기 코드 및 해설 (파이썬)
출처: 이것이 취업을 위한 코딩 테스트다 with 파이썬, Q 5, p 315 먼저 무게에 상관없이 두 사람이 볼링공을 고르는 경우의 수를 구해 total에 저장합니다. 이는 nC2와 같으므로 n * (n-1) / 2로 구현합니다. 이후 같은 무게의 공이 2개 이상인 공들을 확인하며, 이 두개를 두 사람이 고를 경우의 수를 구해 duplicates에 저장합니다. total에서 duplicates를 뺀 값을 최종 정답으로 반환합니다. import sys # N: 공의 개수, M: 무게의 범위 N, M = map(int, sys.stdin.readline().split()) balls = list(map(int, sys.stdin.readline().split())) # nC2 total = N * (N-1..
2021.08.16 -
곱하기 혹은 더하기 코드 및 해설 (파이썬)
출처: 이것이 취업을 위한 코딩 테스트다 with 파이썬, Q 2, p 312 0과 1이 포함된 연산은 더하기, 그 외의 숫자들은 모두 곱하기로 처리합니다. 숫자들의 리스트를 deque로 만든 후, 순서대로 숫자를 하나씩 pop합니다. 숫자가 남아있을 때까지 다음을 반복합니다. 이전 혹은 현재 숫자가 0 또는 1이면 이전 숫자와 현재 숫자를 더한 값을 이전 숫자로 설정합니다. 그 외는 이전 숫자와 현재 숫자를 곱한 값을 이전 숫자로 설정합니다. 반복이 끝난 후 이전 숫자를 반환합니다. import sys from collections import deque # 0과 1은 더하기, 나머지 수는 곱하기로 처리해야 함 s = [int(num) for num in sys.stdin.readline()] s = ..
2021.08.16 -
백준 안테나 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net 집들의 위치를 houses라는 리스트에 저장하고 이를 오름차순으로 정렬합니다. 집들의 개수를 N으로 저장하고, 정중앙의 집인 N을 2로 나눈 몫번째 집에 안테나를 설치합니다. import sys # 집의 개수 N = int(sys.stdin.readline()) # 집의 위치 houses = list(map(int, sys.stdin.readline().split())) # 정렬 houses.sort() # 정중앙의 집..
2021.08.03 -
백준 국영수 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net sort의 key를 활용해 문제의 조건에 맞게 정렬했습니다. 디폴트로 오름차순으로 정렬되므로, 내림차순으로 정렬되어야 할 경우엔 -를 붙여 내림차순으로 정렬되도록 했습니다. import sys # 학생 수 N = int(sys.stdin.readline()) students = [] for i in range(N): # 이름, 국어, 영어, 수학 name, korean, en..
2021.08.02