[ 알고리즘 ]/Sort & Binary Search

    [백준] 2110. 공유기 설치

    📌문제 https://www.acmicpc.net/problem/2110 🎖️난이도 ✔️풀이 # sol1) sys.stdin.realine(), 이분탐색 => 664ms import sys n, c = map(int, input().split()) x_list = sorted([int(sys.stdin.readline()) for _ in range(n)]) start = 1 # 최소 거리 end = x_list[-1] - x_list[0] # 최대 거리 result = 0 # 인접(최소) 공유기 사이의 최대 거리 # start~end 사이에서 "인접 공유기 사이 거리(mid)" 바꿔가며 이진탐색 # 즉, 변수 : "거리" ! while(start = tmp_x + mid: tmp_x = x_list[i..

    [백준] 1300. K번째 수

    📌문제 https://www.acmicpc.net/problem/1300 🎖️난이도 ✔️풀이 # sol1) 이분탐색 => 1028ms n = int(input()) k = int(input()) start = 1 end = k result = 0 while start = k: result = mid end = mid - 1 else: start = mid + 1 print(result) # sol2) 이분탐색 (check함수로 T/F return) => 396ms! n = int(input()) k = int(input()) def check(mid, kk): cnt = 0 for i in range(1, n+1): tmp = mid // i cnt = cnt + tmp if tmp < n else cn..

    [백준] 10816. 숫자 카드 2

    📌문제 https://www.acmicpc.net/problem/10816 🎖️난이도 ✔️풀이 # sol1) dict(해시), 리스트내포, 삼항연산자 => 652ms n = int(input()) cards = list(input().split()) m = int(input()) nums = list(input().split()) result = [0] * m nCards_dict = {} for card in cards: nCards_dict[card] = nCards_dict[card] + 1 if card in nCards_dict else 1 result = [nCards_dict[nums[i]] if nums[i] in nCards_dict else 0 for i in range(m)] prin..

    [프로그래머스] 입국심사

    📌문제 https://programmers.co.kr/learn/courses/30/lessons/43238 🎖️난이도 Level 3 ✔️풀이 #include #include #include using namespace std; long long solution(int n, vector times) { long long answer = 0; long long time_num = times.size(); sort(times.begin(), times.end()); long long min_time = 1; long long max_time = (long long)times.back() * (long long)n; // 모두 long long으로! long long mid_time = 0; while (mi..

    [프로그래머스] 가장 큰 수

    📌문제 https://programmers.co.kr/learn/courses/30/lessons/42746 🎖️난이도 Level 2 ✔️풀이 # sol def solution(numbers): numbers = list(map(str, numbers)) numbers.sort(key = lambda x : x*3, reverse=True) return str(int(''.join(numbers)))