전체 글 썸네일형 리스트형 [백준] 1059 - 좋은 구간 (파이썬) 1. 문제 2. 코드 l = int(input()) s = list(map(int, input().split())) n = int(input()) s.sort() flag = 0 small = 0 big = 0 for i in range(l): if s[i] == n: flag = 1 break if s[i] n and big == 0: big = s[i] if flag == 0: print(big-n-1 + n-small-1 + (n-small-1)*(big-n-1)) else: print(0) 3. 주요 알고리즘 타겟(n)보다 작은데 가장 타겟과 가까운 수(small), 타겟보다 큰데 가장 타겟과 가까운 수(big)을 찾는다. 그리고 big-n-1.. 더보기 [ 알고리즘 ] 백트래킹 1. 개념 해를 찾다가 해가 아니어서 막히면, 되돌아가면 다시 해를 탐색하는 방법. DFS의 일종. 모든 경우의 수 중에서 특정 조건을 만족하는 경우만 살펴보는 방법. 가지치기. --> 최적화 문제와 결정 문제일 때 2. 방법 DFS 등으로 모든 경우의 수를 탐색할 때, 조건으로 절대 해가 아닌 경우일 때는 탐색을 중단하고 그 이전으로 돌아가, 즉 '백트래킹'해서 다른 경우를 탐색하는 방법으로 주로 구현. 주로 재귀로 구현하다가 조건이 맞지 않으면 종료. 3. 예제 https://www.acmicpc.net/problem/15651 n, m = map(int,input().split()) l = [] def dfs(num): if len(l) == m: for i in l: print(i, end = '.. 더보기 [백준] 2981 - 검문 (파이썬) 1. 문제 2. 코드 import math n = int(input()) l = [] gcd = 0 m = [] for _ in range(n): num = int(input()) l.append(num) gcd = abs(l[1]-l[0]) for i in range(2, n): gcd = math.gcd(abs(l[i] - l[i-1]), gcd) for i in range(2, int(math.sqrt(gcd)) + 1): if gcd % i == 0: m.append(i) m.append(gcd//i) m.append(gcd) m = list(set(m)) m.sort() for i in m: print(i, end=' ') 3. 풀이 생각보다 어려운 문제이다. 시간 초과가 나기 쉬워서 잘 고민하.. 더보기 [MySQL] 우분투 Mysql 명령어 - 시작, 정지, 재시작, 상태확인, 접속 하기 1. MySQL 시작 service mysql start 2. MySQL 정지 service mysql stop 3. MySQL 재시작 service mysql restart 4. MySQL 상태확인 service mysql status 5. MySQL 접속 mysql -u root -p 하고 비밀번호 입력해주면 됨. root 사용자 아니라 다른 사용자 사용하고 싶으면 해당 유저 이름 넣어주면 된다. 더보기 [백준] 1358 - 하키 (파이썬) 1. 문제 2. 코드 import math w, h, x, y, p = map(int, input().split()) cnt = 0 for _ in range(p): p_x, p_y = map(int, input().split()) if math.sqrt((p_x - x)**2 + (p_y - (y+h/2))**2) 더보기 [백준] 2477번 - 참외밭 (파이썬) 1. 문제 2. 코드 k = int(input()) l = [] l_no = [] max_h = 0 max_w = 0 for m in range(6): i, j = map(int, input().split()) l.append(j) if i >= 3 and max_h 5: temp -= 6 l_no.append(temp) square = 1 for i in range(6): if i not in l_no: square *=.. 더보기 [백준] 11478번 - 서로 다른 부분 문자열의 개수 (파이썬) 1. 문제 2. 코드 s = input() l = set() for i in range(1, len(s)+1): for j in range(len(s)): l.add(s[j:j+i]) print(len(l)) 3. 주요 알고리즘 간단하다. set을 사용하면 된다. 한글자씩 set에 넣어주고, 다음은 두글자씩 set에 넣어주는 식으로 input의 길이까지 반복한다. 이 때, string[start:end]를 사용해서 문자를 slicing하면 된다. 더보기 [백준] 14425번 - 문자열 집합 (python 파이썬) 1. 문제 2. 코드 원래 코드 (list 사용) n, m = map(int, input().split()) s = [] cnt = 0 for i in range(n): s.append(input()) for i in range(m): test = input() for j in range(n): if test == s[j]: cnt+=1 print(cnt) 정답 코드 (set 사용) n, m = map(int, input().split()) s = set() cnt = 0 for i in range(n): s.add(input()) for i in range(m): test = input() if test in s: cnt +=1 print(cnt) 3. 주요 알고리즘 파이썬에서는 자료구조( list, .. 더보기 이전 1 2 3 4 5 6 ··· 20 다음