https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 1. Logic 이 문제에서 mid값은 공유기와 공유기 사이의 거리를 뜻한다. 이분탐색으로 공유기와 공유기 사이의 거리를 구한 후 wifi[0]~wifi[n-1]까지 탐색하며 공유기간의 사이가 mid보다 큰거나 같을 때를 count해주며 count가 공유기 설치대수 m보다 크거나 같으면 start를 mid로 옮겨, 작으면 end를 mid로 옮겨 ..
전체 글
https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 1. Logic 이 문제에서는 이분탐색으로 찾으려는 mid값이 무엇인지를 정하는게 중요하다고 생각한다. 내가 정한 mid값은 블루레이의 길이이다. 강의 영상의 순서대로 블루레이에 넣어야되기 때문에 이분탐색의 check()함수는 블루레이에 순서대로 영상이 들어가는지 판단해주면 된다. 우리가 찾는 mid값은 가능한 값들중에 최솟값이기 때문에 가능한 mid값의 구간은 FFFF[FT]TTTT가 된다. 그중 가능..
https://www.acmicpc.net/problem/17124 17124번: 두 개의 배열 정수 배열 A 와 B가 있다. A는 총 n개의 서로 다른 양의 정수를 포함하고 B는 총 m개의 서로 다른 양의 정수를 포함한다. A, B를 이용해서 길이가 n인 새로운 배열 C를 만들어보자. C[i] 는 배열 B에 있 www.acmicpc.net 1. Logic 로직을 보면 a배열, b배열을 입력받는다. b배열을 오름차순으로 정리한다. a[0]~a[n-1]까지 차례로 이분탐색을 해서 b[start] target 인 값을 구한후 target-b[start], b[end]-target의 절댓값 중 더 작은 값을 선택해서 더해준다. 출력한다. 2. Code #include #include #include #incl..
https://www.acmicpc.net/problem/13702 13702번: 이상한 술집 프로그래밍 대회 전날, 은상과 친구들은 이상한 술집에 모였다. 이 술집에서 막걸리를 시키면 주전자의 용량은 똑같았으나 안에 들어 있는 막걸리 용량은 랜덤이다. 즉 한 번 주문에 막걸리 용 www.acmicpc.net 1. Logic 막걸리 를 최대한 많이 따를 수 있는 만큼 따르고 나머지는 버린다고 했으니 우리는 K잔을 만들 수 있는 최대 값을 찾아야 한다. 우리가 탐색하는 부분에 대해서 정답은 TTT[TF]FFF 중간 대괄호부분에서 정답이 결정된다. 우리가 구해야 하는 값은 가능한 수들중에서 최댓값이기 때문에 left를 반환하면 된다. 2. Code #include #include #include using ..
https://www.acmicpc.net/problem/2776 2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net 1. Logic 이 문제는 unordered_map을 활용한 풀이, 이분탐색을 활용한 풀이 총 두가지 방법으로 풀이 가능하다. 2. Code 해시 맵 풀이 #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t; cin >> t; while(t--) ..
1. Interrupt란? Interrupt의 사전적 정의 : 방해하다, 중단시키다 사전적 정의 그대로 CPU가 일을 수행하는 도중 하드웨어 장치 등에서 발생한 입출력과 같은 예기치 못한 상황을 CPU에게 알려 먼저 예외상황을 처리하도록 하는 것. 2. Interrupt 사용이유 한번에 한가지 일을 수행할 수 있는 CPU를 잠시 중단시키고 급한 Interrupt를 먼저 처리한 후 이전에 수행하던 일을 다시 수행하여 CPU의 효율을 높이기 위해 사용한다. 입출력 연산의 속도는 CPU의 명령 수행 속도보다 현저히 느리다. 하지만 한번에 한가지 일밖에 수행할 수 없는 CPU를 입출력 연산이 끝날 때까지 기다리며 놀게하면(월급루팡) 효율이 떨어지니 연산 결과가 나오기 전에는 CPU가 할 일을 하다가 Interr..
이번 포스팅에서는 스프링 시큐리티를 활용한 로그인을 하는 방법에 대해 포스팅 할 것이다. 로그인을 하는 과정에는 인가와 인증이라는 절차가 생기는데 이 둘의 차이부터 간단하게 알아보자 인증이란? (Authentication) - 사용자가 누구인지 신원을 확인하는 절차를 말한다. 쉽게 비유하자면 내가 주민등록증과 같은 정부 문서를 받고 싶을 때 나의 신원을 확인하는 과정이라고 생각하면 쉬울 것 같다. 내가 진짜 나라는 것을 증명하는 것을 말한다. 웹에서는 ID와 Password를 활용하여 로그인 하는 것이 대표적인 인증이다. 인가란? (Authorization) - 어떤 개체가 어떤 리소스에 접근할 수 있는지 어떤 동작을 수행할 수 있는 권한이 있는지를 확인하는 과정이다. 쉽게 비유하자면 내가 체육관에서 운..
https://www.acmicpc.net/problem/17266 17266번: 어두운 굴다리 인하대학교 후문 뒤쪽에는 어두운 굴다리가 있다. 겁쟁이 상빈이는 길이 조금이라도 어둡다면 가지 않는다. 따라서 굴다리로 가면 최단거리로 집까지 갈수 있지만, 굴다리는 어둡기 때문에 빙 www.acmicpc.net 1. Logic 값이 참이 되는 구간을 살펴보면 정답 mid를 기준으로 0~left까지는 false, right~n까지는 true이다. 여기서는 참이 되는 값중 최솟값을 구해야 하기 때문에 right를 반환해 주면 된다. 2. Code #include #include using namespace std; int n, m; vector input; int binarySearch() { int start..
https://www.acmicpc.net/problem/2240 2240번: 자두나무 자두는 자두를 좋아한다. 그래서 집에 자두나무를 심어두고, 여기서 열리는 자두를 먹고는 한다. 하지만 자두는 키가 작아서 자두를 따먹지는 못하고, 자두가 떨어질 때까지 기다린 다음에 떨어 www.acmicpc.net 1. Logic 먼저 DP테이블이 의미하는 것은 n초에 먹을 수 있는 자두의 최대 갯수이다. dp[자두떨어지는 시간][움직인횟수][위치한나무번호] 부분문제를 쪼개보자면 시작할때는 1. 1번 나무에서 시작하는 경우 2. 2번 나무에서 시작하는 경우 이후에는 1-1. 1번나무에서 받아먹고 계속 1번에 있는 경우 1-2. 1번나무에서 받아먹고 2번나무로 옮기는 경우 2. 2번나무에서 받아먹고 계속 2번에 있는 ..
https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 1. Logic for문을 0부터 돌기때문에 내 앞에 나오는 애들은 전부 나보다 키가 작다. 그래서 내 앞에 키 큰 사람이 몇명올지 그 사람들의 자리를 남겨 놓는게 목적이다. 2. Code #include using namespace std; int seat[10]; int main() { int n; cin >> n; for(int i = 0; i < n; i++) { //입력 받는 횟수..