본문 바로가기

반응형

백준

[백준] 24060 - 알고리즘 수업 - 병합 정렬 1 (파이썬) 1. 문제 2. 코드 a, k = map(int, input().split()) l = list(map(int, input().split())) n = 0 temp = [] tmp = [] def merge_sort(p, r): global l if p < r: q = int((p+r)/2) merge_sort(p, q) merge_sort(q+1, r) merge(p, q, r) def merge(p, q, r): global temp tmp = [] i = p j = q+1 while i 더보기
[백준] 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.. 더보기
[백준] 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하면 된다. 더보기
[백준] 10815번 - 숫자 카드 (파이썬) 1. 문제 2. 코드 num = [0 for _ in range(20000000)] n = int(input()) n_list = list(map(int, input().split())) for i in n_list: num[i+10000000] = 1 m = int(input()) m_list = list(map(int, input().split())) for i in m_list: print(num[i+10000000], end = ' ') 3. 설명 주요 포인트는 -10000000 ~ 10000000까지의 숫자 범위이므로 총 20000000칸의 list를 만들어서 계산한다. 무슨 말인지 모르겠다면 아래의 예시를 보자. 즉 input이 5개 숫자이고, 5, 8, 9, -10, 10이라면 num[100.. 더보기
[백준] 10866번 - 덱 1. 문제 2. 코드 from collections import deque import sys deq = deque() n = int(input()) for i in range(n): s = sys.stdin.readline() #push_front if s[1] == 'u' and s[5] == 'f': s, num = s.split() num = int(num) deq.appendleft(num) #push_back elif s[1] == 'u' and s[5] == 'b': s, num = s.split() num = int(num) deq.append(num) #front elif s[0] == 'f': if len(deq) == 0: print(-1) continue print(deq[0]) #.. 더보기
[백준] 11718번 - 그대로 출력하기 (파이썬) 1. 문제 2. 코드 while True: try: n = input() if n == "": break print(n) except: break 3. 풀이 try, except를 사용하면 eof 가 나올 때 break를 할 수가 있다. 더보기
[백준] 1094번 - 막대기 (파이썬) 1. 문제 2. 코드 l = [1, 2, 4, 8, 16, 32, 64] n = int(input()) cnt = 0 for i in range(len(l)-1, -1, -1): if n >= l[i]: cnt += 1 n -= l[i] print(cnt) 3. 풀이 별 거 없는 문제이다. 64를 반으로 계속 잘랐을 때 나오는 막대의 길이(l 리스트)로 그리디처럼 풀면 된다. 더보기

반응형