본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

(409)
#409 백준 파이썬 [2631] 줄세우기 - LIS https://www.acmicpc.net/problem/2631 SOLUTION 최장 증가 부분 수열 (LIS : Longest Increasing Subsequence)문제이다. 간단하게 말하자면 먼저 답이 될 수열을 dp = [] 로 정의한 뒤 for문으로 children 리스트 앞쪽부터 검사를 진행한다. if: 현재 값이 수열에서 가장 크다면 --> dp의 가장 뒤에 값을 추가 else: 아니라면 --> 자신보다 큰 수 중 최솟값과 대치(이진탐색 이용) 이런식으로 증가하는 최장 길이의 부분 수열의 길이(리스트 구성은 틀림)를 알아낼 수 있다. 이 방법으로 시간복잡도 O(nlogn)에 가장 긴 dp의 길이를 알아낼 수 있다. PYTHON CODE from bisect import bisect_lef..
#408 백준 파이썬 [2745] 진법 변환 https://www.acmicpc.net/problem/2745 PYTHON CODE N, B = input().split() B = int(B) result = 0 for i, j in enumerate(N): try: if int(j): result += int(j) * B ** (len(N)-i-1) except: result += (ord(j)-55) * B ** (len(N)-i-1) print(result)
#407 백준 파이썬 [11382] 꼬마 정민 https://www.acmicpc.net/problem/11382 PYTHON CODE A, B, C = map(int, input().split()) print(A+B+C)
#406 백준 파이썬 [18883] N M 찍기 https://www.acmicpc.net/problem/18883 PYTHON CODE N, M = map(int, input().split()) num = 1 for _ in range(N): for _ in range(M): if num % M == 0: print(num, end = '') else: print(num, end = ' ') num += 1 print()
#405 백준 파이썬 [5217] 쌍의 합 https://www.acmicpc.net/problem/5217 PYTHON CODE for _ in range(int(input())): n = int(input()) start = 1 print("Pairs for %d:" %n, end = ' ') for k in range((n-1)//2): if k != 0: print(',', end = ' ') print(start, n - start, end = '') start += 1 print()
#404 백준 파이썬 [404] Not Found
#403 백준 파이썬 [1259] 팰린드롬수 https://www.acmicpc.net/problem/1259 PYTHON CODE num = input() while num != '0': if num[::-1] == num: print('yes') else: print('no') num = input()
#402 백준 파이썬 [14681] 사분면 고르기 https://www.acmicpc.net/problem/14681 PYTHON CODE (Normal) x = int(input()) y = int(input()) if x > 0: if y > 0: print(1) else: print(4) else: if y > 0: print(2) else: print(3) PYTHON CODE (Psycho; source: woolim) print("3421"[(int(input())>0)+(int(input())>0)*2])