반응형

알고리즘 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클럽 코테 스터디 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

매크로 함수의 문제점

매크로 함수는 컴파일 이전에 코드가 변환되기 때문에 일반 함수보다 속도가 빠릅니다. -> 일반 함수가 가지고 있는 호출 과정이 없기 때문에 속도에서 좋은 성능을 나타낸다. 하지만 매크로 함수로 인해 디버깅의 어려움이 있을 수도 있습니다. ex) #define max(x,y) ((x)>(y)?(x):(y)) 이는 max함수를 매크로 함수로 정의한 것입니다. 1. 첫번째 문제 하지만 개발자의 실수로 바깥 괄호를 빠뜨리고 매크로 함수를 정의했다고 가정하게된다면 #define max(x,y) (x)>(y)?(x):(y) "2*max(3,2)" 이라는 수식은 -> "2*(3)>(2)?(3):(2)"로 변환하게 되고 결과 값은 3이 나옵니다. 6을 예측했지만 3이나오게 되고 이를 디버깅하기는 찾기가 어렵습니다. 2..

알고리즘 2021.07.19
반응형