Q www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net A 원래는 이진 탐색 알고리즘으로 푸는 문제인 것 같으나, 이진 탐색을 고민하다가 그냥 식이 떠올라서 편하게 풀었다. 코드 import sys s = int(sys.stdin.readline().rstrip()) import math n = (- 1 + math.isqrt(1 + 8 * s)) // 2 #f(x) = (x(x+1))/2 = Σx라는 걸 이용했다. print(n)
JOIN(조인) 1. 개념 두 개 이상의 테이블을 연결하여 데이터를 검색하는 방법이다. 2. 유형 - 논리적 조인 : 사용자 SQL 문에 표현되는 테이블 결합 방식 - 물리적 조인 : 데이터베이스 옵티마이저에 의해 내부적으로 발생하는 테이블 결합 방식 3. 논리적 조인 (1) INNER JOIN(내부 조인) - 공통 존재 컬럼의 값이 같은 경우를 추출 - 조인 대상이 되는 컬럼을 명시적으로 선언하기 위하여 ON 조건절 사용된다. - SELECT A.컬럼1, A.컬럼2, ..., B.컬럼1, ... FROM 테이블1 A JOIN 테이블2 B ON 조인조건 WHERE 검색조건; 같은 이름의 컬럼이 여러 테이블에 있는 경우, 별칭.컬럼명 형태로 명시 WHERE 절은 생략가능 (2) OUTER JOIN(외부 조..
이진 탐색 알고리즘 Q www.acmicpc.net/problem/1072 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net A 이진 탐색 알고리즘을 사용하였다. 코드 import sys from math import floor x, y = map(int, sys.stdin.readline().rstrip().split()) z = floor((y*100)/x) #내림 start = 0 end = 1000000000 if x == y or z == 99: #승률 100프로와 99프로는 변하지 않으므로 -..
정렬 알고리즘 Q www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net A 문제를 바로 풀려고 하지말고, 어디 위치일 것인지 예상해보고 그 위치가 입력된 리스트로 어떻게 표현해낼수 있을지 생각해보며 풀자! 코드 import sys n = int(sys.stdin.readline().rstrip()) array = list(map(int, sys.stdin.readline().rstrip().split())) array.sort() #오름차순 정렬 if n % 2 == 0: #집의 개수가..
정렬 알고리즘 Q www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net A 입력을 문자열로 받았고, key = lambda x : (-x[1], x[2], -x[3], x[0]) 를 하기 위해서 국어점수, 영어점수, 수학점수를 int로 정수형으로 변환시켰다. 입력이 10만 이상이라면 input보다 sys쓰는 습관을 들이자! 시간 10배정도 차이난다. 코드 import sys n = int(sys.stdin.readline().rstrip())..
SQL 함수 1. 문자 함수 - LOWER('문자') : 소문자로 변환 - UPPER('문자') : 대문자로 변환 - INITCAP('문자') : 첫글자만 대문자 - CONCAT('문자1', '문자2') : 문자 연결 - LENGTH('문자') : 문자의 길이, 문자타입 컬럼명이면 해당 컬럼 속성값의 문자길이. 줄바꿈도 1로 계산 - SUBSTR(컬럼명, 시작위치, 갯수(생략가능)) : 속성값에서 시작위치부터 갯수만큼의 문자 선택, 시작위치가 음수면 오른쪽부터 계산 - INSTR(컬럼명, '문자', 시작위치, 몇번째 것) : 문자 위치 검색, 찾는 문자가 두개 이상 있는 경우에는 첫번째 위치 검색 - LPAD(컬럼, 숫자, 'x') : 숫자만큼의 공간에 컬럼 내용 채우고 남은건 x로 채운다. - RPAD..