본문 바로가기

분류 전체보기

(308)
[백준/C++] 10986번: 나머지 합 문제 https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 문제 요약 N개의 이루어진 수열 A의 연속된 부분 수열의 합이 M으로 나누어 떨어지는 구간의 개수를 출력한다. 코드 ??? 코드 설명 0 ~ i 까지의 누적합 => prefix[i] 부분 수열 (i + 1~ j) 의 합 => prefix[j] - prefix[i] 부분 수열 (i + 1 ~ j) 의 합이 M으로 나뉜다. => (prefix[j]..
[백준/C++] 2042번: 구간 합 구하기 문제 https://www.acmicpc.net/problem/2042 2042번: 구간 합 구하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)과 M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) 가 주어진다. M은 수의 변경이 일어나는 횟수이고, K는 구간의 합을 구하는 횟수이다. 그리고 둘째 줄부터 N+1번째 줄 www.acmicpc.net 문제 요약 N개의 수가 배열 A에 저장되어 있다. 중간에 A[i]의 변경이 빈번히 일어날 때, 어떤 부분의 합을 구하려고 한다. 코드 #include #include #define ll long long #define MAX_N 1000000 using namespace std; ll n, m, k; ll A[MAX_N + 1]; l..
BIT (Binary Indexed Tree) 문제 Prefix Sum 배열을 이용하면 누적합을 O(n) 시간에 구할 수 있다. => O(logn)에 누적합을 구할 수 있는 방법은 없을까 ? 용어 정의 A[i] : 배열 A의 i번째 요소 L[i] : i를 2진수로 나타냈을 때 마지막 1에 해당하는 값 ex) 12 = 1100 => L[12] = 4 Tree[i] : A[i]부터 앞으로 L[i] 개의 값의 합 (이전 수) L[i]를 구하는 방법 L[i] = i & -i -i = ~i + 1 i = 1001101011101011000000000000 ~i = 0110010100010100111111111111 -i = 0110010100010101000000000000 i & -i = 000000000000000100000000000 PrefixSum[..
TCP & UDP 통신 실습: 동일 PC TCP 통신 # -*- coding: utf-8 -*- from socket import * # 서버의 IP와 포트번호 serverName = '192.168.0.133' serverPort = 15000 # 서버 소켓 생성 serverSocket = socket(AF_INET, SOCK_STREAM) # AF_INET: IPv4주소 체계 사용, SOCKET_STREAM: TCP 소켓 생성 # Socket Binding: 서버 소켓에 IP주소와 포트 번호 할당 serverSocket.bind((serverName, serverPort)) # 서버 소켓을 통해 클라이언트의 연결 요청 대기 serverSocket.listen(1) # 1: 최대 1개의 연결 요청만 저장 가능 (1..
[백준/C++] 13335번: 트럭 문제 https://www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 문제 요약 강을 가로지르는 하나의 차선으로 된 다리가 있다. n개의 트럭이 다리를 건너려고 한다. 각 트럭은 무게를 갖고, 다리 위에 있는 트럭들의 무게의 합은 다리의 최대 하중 L보다 작거나 같아야한다. 다리의 길이 w는 단위 길이이고, 트럭들은 단위 시간(1)에 단위 길이(1)만큼 이동할 수 있다. 모든 트럭이 다리를 건너는 시간을 출력한다..
[백준/C++] 2018번: 수들의 합 5 문제 https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 문제 요약 자연수 n을 연속된 자연수들의 합으로 나타내는 가지수를 출력한다. 이 때, 사용하는 자연수는 n이하이다. ex) 15를 나타내는 방법 15 = 7 + 8 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5 코드 #include using namespace std; int n; int main() { cin >> n; int left = 0; int rig..