이분 탐색
-
[프로그래머스] - 숫자 게임Algorithm/프로그래머스 2022. 9. 26. 18:29
문제 [프로그래머스] - 숫자 게임 https://school.programmers.co.kr/learn/courses/30/lessons/12987 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 자연수를 하나씩 부여받습니다. 각 사원은 딱 한 번씩 경기를 합니다. 각 경기당 A팀에서 한 사원이, B팀에서 한 사원이 나와 서로의 수..
-
[Algorithm] - LIS(최장 증가 부분 수열)Algorithm/Algorithm 2022. 9. 5. 13:57
LIS 원소가 n개인 배열의 일부 원소를 골라내서 만든 부분 수열 중, 각 원소가 이전 원소보다 크다는 조건을 만족하고, 그 길이가 최대인 부분 수열을 최장 증가 부분 수열 E.g) [3, 5, 7, 9, 2, 1, 4, 8] 부분 수열 -> [3, 7, 9, 1, 4, 8] / [3, 5, 7, 8] / [1, 4, 8] 길이가 길면서 원소가 증가하는 최장 부분 수열-> [3,5,7,8] 알고리즘 1. DP 각 원소를 돌면서 현재 원소보다 작은 값들(DP) 중 가장 큰 값에다가 연결 각 원소를 돌때마다 하위 원소들에 대해서 완전 탐색이 필요하여 O(N^2) 시간 복잡도 #Init dp = [0]*(n+1); for i in range(n) : for j in range(i) : dp[i] = max(d..
-
이분 탐색Algorithm/Algorithm 2022. 8. 30. 19:44
Binary search(이분탐색) 정렬 되어 있는 리스트에서 특정 데이터를 찾기 위해 모든 데이터를 순차적으로 확인하게 되면 O(N) -> 범위를 줄반씩 줄여 O(logN)으로 탐색 일반적으로는 Start , End , Mid 를 사용하여 탐색 ( Merget Sort 처럼 ) Mid 값을 주의하여 무한루프 주의! bisect library를 사용하여도 된다. 1) Parametic search 최적화 문제를 결정 문제로 변형 이분탐색 수행 일반적으로 도출 되는 함수는 Linear 해야 한다! (증가 및 감소 함수) 2 ) BOJ 1654번 (최적화) N개를 만들 수 있는 랜선의 최대 길이? (결정)길이가 X인 경우에 랜선이 N개 이상인지 아닌지 여부 랜선의 길이를 이분탐색하여 N일 때의 최대값을 구할..
-
[프로그래머스] - 숫자의 표현Algorithm/프로그래머스 2022. 8. 8. 21:10
문제 프로그래머스 - 숫자의 표현 https://school.programmers.co.kr/learn/courses/30/lessons/12924# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 자연수 n이 매개..
-
[BOJ] 2110번 - 공유기 설치Algorithm/BOJ 2022. 6. 20. 23:14
[BOJ] 2110번 - 공유기 설치 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 접근 방식(틀린 풀이) 해당 문제는 풀어본적 있는지 여부에 따라 풀 수 있는지 여부가 달라질 것으로 보인다. 처음에는 공유기를 맨 앞과 맨뒤로 부터 놓은 다음에 하나씩 증가 시키며 Devide 시켜 그 중에 max된 값을 추출하여 값을 구하는 방식으로 구현하였다. 하지만 위와 같은 방식은 O(N^2)이 소요되..
-
[BOJ] 2143번 - 두 배열의 합Algorithm/BOJ 2022. 6. 10. 14:47
[BOJ] 2143번 - 두 배열의 합 https://www.acmicpc.net/problem/2143 2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1 ≤ m ≤ 1,000)이 주어지고, 그 www.acmicpc.net 알고리즘 해당 범위 내에서 특정 값이 있는지 여부를 확인하기 위한 이분탐색 ( 정렬 필수 ) 1. A,B 각각의 경우의 수로 나타낸다. 2. B를 정렬한다. 3. A를 통해 B에서 해당되는 경우의 수가 있는지 이분탐색 4. 결과 출력 코드 #BOJ 2143번 import bise..