목록전체 글 (102)
컴공생 누르지 마세요! 컴공생 울어요.
네트워크 컴퓨터 등의 장치들이 통신 기술을 이용하여 구축하는 연결망을 지칭하는 용어 노드와 링크가 서로 연결되어 있거나 연결되어 있지 않은 집합체 노드: 서버, 라우터, 스위치 등의 네트워크 장치 링크: 유선 또는 무선 처리량과 지연 시간 네트워크 구축 시 '좋은' 네트워크로 만드는 것이 중요 좋은 네트워크: 많은 처리량을 처리할 수 있고, 지연 시간이 짧으며, 장애 빈도가 적고, 좋은 보안을 갖춘 네트워크 1. 처리량 (Throughput) 링크를 통해 전달되는 단위 시간당 데이터양 단위: bps (bits per second) = 초당 전송 또는 수신되는 비트수 처리량에 영향을 주는 요소들 사용자들의 트래픽 네트워크 장치 간 대역폭 대역폭: 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 ..
이코테 p.380 병사 배치하기 https://www.acmicpc.net/problem/18353 18353번: 병사 배치하기 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 해설 & 소스코드 dp[i] = i번째 원소를 마지막 원소로 갖는 부분 수열의 최대 길이 i번째 원소의 앞에 i번째 원소보다 작은 값을 갖는 j번째 원소가 있다면 dp 테이블 갱신 i번째 원소의 앞에 i번째 원소보다 작은 값이 있게 하기 위해서 입력받은 리스트의 순서를 반대로 뒤집음 # 입력 받기 n = int(input()) array = list..
이코테 p.377 퇴사 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 문제 해설 및 소스코드 첫날이 아닌, 마지막날부터 계산해야 함 dp[i] = i번째 날 부터 퇴사 전까지 벌 수 있는 최대 비용 점화식은 다음과 같음 dp[i] = max(p[i] + dp[t[i] + i], max_cost) i번째 날의 비용과 i번째 날의 상담이 끝나는 날의 최대 비용을 합친 것 vs 현재까지의 최대 비용을 비교하여 더 큰 값 선택 # dp[i] = i번째 날부터 퇴사일까지 벌 수 있는 최대 비용 # 점화식: dp[i] = max(p[i] + dp[i + t[i]], max_value) # ..
이코테 p.344 경쟁적 전염 https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 해설 및 소스코드 BFS를 이용하여 바이러스 증식 구현 BFS 구현을 위해 큐를 이용 번호가 작은 바이러스부터 증식시켜야 하기 때문에 초기에 큐에 현재 존재하는 모든 바이러스 정보를 삽입한 후, 바이러스 번호 기준으로 오름차순 정렬 번호가 작은 바이러스부터 큐에서 꺼낸 후, 해당 바이러스의 상하좌우에 대해 확인하여 증식할 수 있는 경우 ..
이코테 p.341 연구소 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 소스코드 n과 m 입력 크기가 크지 않기 때문에 벽 3개를 세울 수 있는 모든 경우의 수를 찾을 수 있음 동작 방식 DFS를 이용하여 벽 3개를 세울 수 있는 모든 경우의 수 구하기 DFS를 이용하여 바이러스 퍼뜨리기 바이러스를 퍼뜨린 후의 안전 영역 카운트 안전 영역의 최댓값 갱신하기 # DFS를 이용하여 빈 칸에 벽 3개를 세울 수 있는 모든 경우의 수를 찾고 # DFS를 이용하여..
이코테 p.339 특정 거리의 도시 찾기 https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net BFS 버전 소스코드 현재 노드 now와 연결된 다른 노드에 도달할 수 있으면 '현재 노드까지의 거리 + 1' 큐를 이용하여 BFS 구현 from collections import deque import sys input = sys.stdin.readline # 입력받기 n, m, k..
이코테 p.323 문자열 압축 https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 최대 압축 단위는 주어진 문자열의 길이 // 2 그 이상부터는 압축 단위가 될 수 없음 압축 단위를 1씩 증가시키면서 압축 수행 후 결과 문자열의 길이 비교 ex) 압축 단위가 1일 때는 [a], [a], [b], [b], [c]이고, 압축 단위가 2일 때는 [a, a], [b, b] [c] def solution(s): answer = len(s) # 압축..
백준 18406번 럭키 스트레이트 https://www.acmicpc.net/problem/18406 18406번: 럭키 스트레이트 첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다. www.acmicpc.net 소스코드 입력된 문자열의 중간 인덱스를 구하여 문자열의 좌, 우 각각에 대해 자릿수의 총합을 계산함 n = input() data = [] for i in range(len(n)): data.append(int(n[i])) mid_idx = (len(n) // 2) num1 = 0 num2 = 0 for i in range(0, mid_idx): num1 += data[i] num2 += data[i + mid_i..