본문 바로가기

분류 전체보기

[Python] 입력 받기 (input(), sys.stdin.readline()) 1. input() 가장 기본적인 입력 방식으로, 문자열을 입력받게 된다 숫자로 입력을 받고싶다면 다음과 같이 int형 변환을 해주어야 한다 str = input() num = int(input()) input() 함수는 기본적으로 한 줄 단위로 입력을 받기 때문에 공백을 단위로, 쉼표를 단위로 나누고 싶을 때에는 다음과 같이 split() 함수를 이용한다 str = input().split() # 공백 단위 str_list = input().split(",") # 쉼표 단위 split() 함수는 리스트로 저장을 하게 된다 이를 독립적으로 변수에 저장하고 싶다면, 다음과 같이 map() 함수를 이용한다 str1, str2 = map( input().split() ) num1, num2 = map( int.. 더보기
[Python] 유클리드 알고리즘 유클리드 알고리즘은 두 수의 최대공약수를 구하는 방법으로, 기록이 남아 있는 가장 오래된 알고리즘이다 이는 gcd(a, b) == gcd(a-b, b) 임을 이용한다 ( ∵ a, b의 공약수 g가 있다고 하자 a = a'g, b = b'g 이다 a-b = (a'-b')g 이므로 g는 a'-b', a-b, b의 공약수이다 ) 코드는 다음과 같다 def gcd(a, b): if(a < b): a, b = b, a if(q == 0): return p return gcd(a-b, b) 하지만 더 최적화할 수 있다 a의 값이 충분히 클 때, 이 알고리즘은 적어도 a/b 번의 재귀 호출을 거칠 것이다 이를 a-b 대신, a%b로 취한다면, 보다 더 깔끔하게 동작할 것이다 코드는 다음과 같다 def gcd(x, y.. 더보기
[Python] 소인수 분해 (** 연산자, // 연산자) 소인수 분해는 한 합성수를 소수들의 곱으로 표현하는 방법을 말한다 가장 간단한 방법은 2부터 시작해 n의 소인수가 될 수 있는 수들을 순회하면서, n의 약수를 찾을 때마다 나누는 방법이 있다 n이 소수인 경우 √n번 반복문을 돌기 때문에 시간 복잡도는 O(√n)이 된다 이 범위의 소수들을 미리 찾아둔다면, 훨씬 빨라지는 최적화 방법이 될 것이다 코드는 다음과 같다 N = int(input()) for i in range(2, int(N ** 0.5) + 1): #math.sqrt() 대신 **0 5 while(N > 1): if(N % i == 0): N //= i #정수형 나눗셈 print(i) else: break if(N > 1): print(N) 1. ** 연산자 제곱근 값을 구할 때, 다음과 같.. 더보기
[C] 삼분 탐색(Ternary Search)과 이진 탐색(Binary Search) 이진 탐색(binary search)은 정렬된 데이터 집합을 이분화하면서 탐색하는 방법이다 다음과 같은 코드를 사용한다 int biSearch(int l, int r, int target) { // list에서 target 찾기 int mid; while (l < r) { mid = (l + r) / 2; if (list[mid] < target) l = mid + 1; else r = mid; } //return idx값 return r; //or l } 다음은 이진 탐색을 이용한 알고리즘이다 - snupi.tistory.com/71 [백준 12015번][C] 이진 탐색(Binary Search)을 이용한 LIS(최장 증가 수열) 최장 증가 부분 수열, LIS(Longest Increasing Subs.. 더보기
CodeBlocks 간단한 팁 6가지 1. 파일 프로젝트 창이 사라졌을 때 복원 View -> Manager (Shift + F2) 2. 편집창 아래 메시지 창이 사라졌을 때 복원 View -> Logs (F2) 3. 명령행 인수(command-line argument) 설정 Project -> Set programs' arguments... 4. 들여쓰기를 새로 맞추고 싶을 때(re-indent) 들여쓰기를 새로 맞출 부분을 선택하고 마우스 우클릭 -> Format use AStyle 5. 변수나 함수의 이름 일괄 변경 (이름 변경 리팩토링: refactoring rename) 바꿀 이름 위에서 마우스 우클릭 -> Code Refactoring -> Rename symbols 전역 변수나 함수의 경우 파일을 선택하라는 메시지 박스가 나오면.. 더보기