반응형

2025/01 5

[99클럽 코테 스터디 5일차 TIL] 백준 2470번 두 용액

문제 : https://www.acmicpc.net/problem/2470    풀이우선 입력 받은 데이터를 정렬을 한 후 가장 왼쪽과 가장 오른쪽에서부터 데이터를 차례대로 선택해가면서 합이 가장 0에 가까운 값일 때의 두 데이터를 선택할 수 있도록 코드를 작성했습니다.초기값을 어떻게 세팅할까 고민을 했었는데, 처음에는 INF = sys.maxsize  를 사용하려다가 맨 왼쪽과 맨 오른쪽 값을 초기값으로 세팅해도 문제가 없다고 판단하여 그렇게 세팅을 했습니다.import sysread = sys.stdin.readlinen = int(read())arr = list(map(int, read().split(' ')))arr.sort()left = 0right = n-1answer = abs(arr[lef..

알고리즘 2025.01.17

[99클럽 코테 스터디 4일차 TIL] 이분 탐색

문제 : https://www.acmicpc.net/problem/2343   풀이이분 탐색을 활용하는 방법이진 이진 탐색은 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘 입니다. 따라서 sort() 메서드를 사용하여 정렬을 우선 해줘야 합니다. 그리고 보통 변수 3개 (start, mid, end)를 사용하여 탐색하게 됩니다.이분 탐색을 사용할 경우 시간 복잡도는 O(logN)입니다. 단계마다 탐색 범위를 반으로 나누는 것과 동일하므로 O(logN)이라는 시간 복잡도를 가지게 됩니다. import sysread = sys.stdin.readlineN, M = map(int, read().split())data = list(map(int, read().split()))# 이분 탐색 값 ..

카테고리 없음 2025.01.16

[99클럽 코테 스터디 3일차 TIL] 이분 탐색

문제 : https://www.acmicpc.net/problem/11663   풀이이분 탐색을 활용하는 방법이진 이진 탐색은 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘 입니다. 따라서 sort() 메서드를 사용하여 정렬을 우선 해줘야 합니다. 그리고 보통 변수 3개 (start, mid, end)를 사용하여 탐색하게 됩니다.이분 탐색을 사용할 경우 시간 복잡도는 O(logN)입니다. 단계마다 탐색 범위를 반으로 나누는 것과 동일하므로 O(logN)이라는 시간 복잡도를 가지게 됩니다. import sysread = sys.stdin.readlinedef find_start(locations, target): start, end = 0, N - 1 while start  T..

알고리즘 2025.01.16

[99클럽 코테 스터디 2일차 TIL] 이분 탐색 - 백준 1654번 문제 (랜선 자르기)

문제 : https://www.acmicpc.net/problem/1654  풀이이분 탐색을 활용하는 방법이진 이진 탐색은 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘 입니다. 따라서 sort() 메서드를 사용하여 정렬을 우선 해줘야 합니다. 그리고 보통 변수 3개 (start, mid, end)를 사용하여 탐색하게 됩니다.이분 탐색을 사용할 경우 시간 복잡도는 O(logN)입니다. 단계마다 탐색 범위를 반으로 나누는 것과 동일하므로 O(logN)이라는 시간 복잡도를 가지게 됩니다. import sysread = sys.stdin.readlineK, N = map(int, read().split())data = list()for i in range(K): data.append(i..

알고리즘 2025.01.14

[99클럽 코테 스터디 1일차 TIL] 집합과 이분 탐색

문제 : https://www.acmicpc.net/problem/2776 풀이1. set 함수를 사용하는 방법 set 함수는 순서가 없는 자료형입니다. 따라서 set을 사용하면 중복된 값이 제거가 됩니다. set을 사용함으로써 시간 복잡도가 O(N)이 됩니다.t = int(input())for _ in range(t): n = int(input()) note1 = set(map(int,input().split())) m = int(input()) note2 = list(map(int,input().split())) for num in note2: if num in note1: print(1) else: ..

알고리즘 2025.01.13
반응형