목록전체 글 (591)
어흥
문제 링크: https://www.acmicpc.net/problem/1240 1240번: 노드사이의 거리 N(2≤N≤1,000)개의 노드로 이루어진 트리가 주어지고 M(M≤1,000)개의 두 노드 쌍을 입력받을 때 두 노드 사이의 거리를 출력하라. www.acmicpc.net 1. 주의할 점 - 초기화 작업을 거친다 - 다익스트라나 플로이드와샬 알고리즘에 대해 알고 있으면 해결할 수 있다(Tree라서 DFS도 간단히 가능) import java.util.*; import java.lang.*; import java.io.*; class Main { static final int MAX = 987654321; static int node,query; public static void main (Strin..
문제 링크: https://www.acmicpc.net/problem/1322 1322번: X와 K 첫째 줄에 X와 K가 주어진다. X와 K는 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 1. 주의할 점 - 출력 결과를 Long 타입으로 출력한다 - 계산하는 과정에서 Int타입을 벗어날 수 있다 2. 구현 - X+A = X|A 를 만족하려면, X를 비트로 바꿨을 때, 0에 해당하는 부분을 1로 채워주면 된다 - 이 과정에서 위의 식이 성립하는 K번째로 작은 수를 구하기 위해 K도 비트로 바꾼다 - 왼쪽부터 시작해서 X의 0에 해당하는 부분이 현재 K를 비트로 바꿨을때 1이라면 해당하는 만큼의 수를 더하고 0이라면 더하지 않는다 (아래 TC 참조) #1 X = 10 -..
문제 링크: https://www.acmicpc.net/problem/13701 13701번: 중복 제거 문제: N개의 정수 A1, A2, ..., AN 을 읽고, 이들 중에서 반복되는 수를 제외하고 남은 N'개의 수 B1, B2, ..., BN’ 을 입력된 순서대로 출력하시오. 이때, 0 ≤ Ai < 225 = 33554432, i=1,2,…,N. 입력의 개수 N은 1 www.acmicpc.net 1. 주의할 점 - 입출력 시간단축 필요 - STL인 BitSet을 이용 or Int[] 배열을 이용하여(32bit) 표현 2. 구현 - 비트셋을 이용하여 비트셋에 있으면 무시, 없으면 저장+출력을 진행한다 - 비트셋을 이용하지 않을 경우, Int 타입인 Arr[] 배열을 통해 입력받은 숫자를 32로 나눈다(..
문제 링크: https://www.acmicpc.net/problem/18119 18119번: 단어 암기 준석이는 영어 단어를 외우려고 한다. 사전에는 N가지 단어가 적혀 있다. 모든 단어는 소문자이다. 단어 안에 있는 모든 알파벳을 알 때, 그 단어를 완전히 안다고 한다. 다음과 같은 쿼리들이 주 www.acmicpc.net 1. 주의할 점 - 비트마스크를 이용하여 문제를 해결한다 2. 구현 - 기억하고 있는 알파벳의 상태를 curKnow 변수에 저장한다. 초기에는 26가지 모두 알고 있으므로 curKnow = (1
문제 링크: https://www.acmicpc.net/problem/3653 3653번: 영화 수집 각 테스트 케이스에 대해서 한 줄에 m개의 정수를 출력해야 한다. i번째 출력하는 수는 i번째로 영화를 볼 때 그 영화의 위에 있었던 DVD의 개수이다. 상근이는 매번 영화를 볼 때마다 본 영화 DVD www.acmicpc.net 1. 주의할 점 - 값이 자주 변경 + 구간 합을 구해야 한다 → 세그먼트 트리 - TC가 여러개 → 사용하는 배열 초기화 필요 2. 구현 - TC가 여러개이므로 Tree[]와 Arr[] 배열을 적절히 초기화하고 시작한다 - 현재 디스크가 Num개 꽂혀있다 + M번의 이동을 수행한다 → 옮기는 디스크를 배열의 가장 뒤로 배치한다면? → 최소 N+M의 크기를 가지는 배열이 필요하..
문제 링크: https://www.acmicpc.net/problem/7578 7578번: 공장 어떤 공장에는 2N개의 기계가 2열에 걸쳐 N개씩 배치되어 있다. 이 2개의 열을 각각 A열과 B 열이라고 부른다. A열에 있는 N개의 기계는 각각이 B열에 있는 N개의 기계와 하나씩 짝을 이루어 케이블 www.acmicpc.net 1. 주의할 점 - 세그먼트트리 혹은 펜윅트리에 대해 알고 있어야 한다 - 답의 경우, 구간합의 합이므로 LongLong으로 설정한다 2. 구현 - 서로 다른 두 선분이 만나서 생기는 교차점의 수를 구한다 → 첫째 행에서 둘째 행으로 선분을 잇는다 → 둘째행 기준 오른쪽에 이미 연결된 선분의 수만큼 교차한다 → 오른쪽에 연결된 선분의 수를 구간합으로 구한다 → 연결된 둘째행의 인덱..
//호출 URL https://www.naver.com:443 프로토콜: https URL: www.naver.com Port: 443 1. URL을 Parsing하여 HTTP Request Message를 만들어서 OS에 전송 요청한다. 2. HSTS 목록 조회 : HTTP를 허용하지 않고 HTTPS 사용하는 연결만 허용한다. HTTP요청이 왔다면, 응답 헤더에 "Strict Transport Security"라는 필드를 포함하여 응답하고 브라우저는 이후 응답할때 HTTPS를 통해서 응답. 또한, 브라우저의 HSTS 캐시에 해당 URL 저장. 이후, 브라우저에선 HSTS 목록을 통해 HTTPS로 보낼지 확인하며, HTTP로 왔다면 301,302 상태코드를 통해 Redirect하라고 응답 3. 도메인으로..
문제 링크: https://www.acmicpc.net/problem/6549 6549번: 히스토그램에서 가장 큰 직사각형 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ www.acmicpc.net 1. 주의할 점 - 분할정복 + 세그먼트 트리를 통해 해결한다 2. 구현 - 직사각형의 높이에 대한 정보를 Arr[] 배열에 담는다 - Tree[] 배열을 동적할당한다 - Init() 배열을 통해 Tree[] 배열에 최소 높이를 가지는 인덱스 번호를 저장한다 - findMinIdx() 함수를 통해 Left~Right까지의 Arr..