본문 바로가기
728x90

분류 전체보기380

[Python] 백준 24416 알고리즘 수업 - 피보나치 수 1 (시간 초과) 백준 24416 알고리즘 수업 - 피보나치 수 1 문제 오늘도 서준이는 동적 프로그래밍 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍으로 구하는 알고리즘을 배웠다. 재귀호출에 비해 동적 프로그래밍이 얼마나 빠른지 확인해 보자. 아래 의사 코드를 이용하여 n의 피보나치 수를 구할 경우 코드1 코드2 실행 횟수를 출력하자. 피보나치 수 재귀호출 의사 코드는 다음과 같다. fib(n) { if (n = 1 or n = 2) then return 1; # 코드1 else return (fib(n - 1) + fib(n - 2)); } 피보나치 수 동적 프로그래밍 의사 코드는 다음과 같다. fibonacci(n.. 2023. 6. 1.
[Python] 백준 14889 스타트와 링크 백준 14889 스타트와 링크 문제 오늘은 스타트링크에 다니는 사람들이 모여서 축구를 해보려고 한다. 축구는 평일 오후에 하고 의무 참석도 아니다. 축구를 하기 위해 모인 사람은 총 N명이고 신기하게도 N은 짝수이다. 이제 N/2명으로 이루어진 스타트 팀과 링크 팀으로 사람들을 나눠야 한다. BOJ를 운영하는 회사 답게 사람에게 번호를 1부터 N까지로 배정했고, 아래와 같은 능력치를 조사했다. 능력치 Sij는 i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치이다. 팀의 능력치는 팀에 속한 모든 쌍의 능력치 Sij의 합이다. Sij는 Sji와 다를 수도 있으며, i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치는 Sij와 Sji이다. N=4이고, S가 아래와 같은 경.. 2023. 5. 31.
[빅데이터] 파이썬 빅데이터 분석 패키지 - scikit-learn 1. scikit-learn 개요 머신러닝 분석을 수행할 때 가장 유용하게 사용할 수 있는 파이썬 라이브러리 1) scikit-learn 임포트 import sklearn print(sklearn.__version__)#버전확인 2. scikit-learn 기반 프레임워크 머신러닝 모델 학습을 위한 fit 함수와 학습된 모델의 예측을 위한 predict 함수 제공 분류 알고리즘을 위한 클래스 Classifier, 회귀 알고리즘을 위한 클래스 Regressor 3. scikit-learn 주요 모듈 1) 예제 데이터 모듈 설명 sklearn.datasets scikit-learn에 내장되어 예제 데이터 세트를 제공 2) 변수 처리 모듈 설명 sklearn.preprocessing 데이터 전처리에 필요한 다.. 2023. 5. 30.
[빅데이터] 파이썬 빅데이터 분석 패키지 - pandas 1. pandas 개요 파이썬에서 데이터 처리를 위해 존재하는 가장 인기 있고 핵심적인 라이브러리 행과 열로 이루어진 2차원 데이터를 효율적으로 가공 및 처리 할 수 있는 다양한 기능 제공 numpy 기반, 훨씬 유연하고 편리하게 데이터 핸들링 가능 pandas의 핵심 객체는 여러개의 행과 열로 이루어진 2차원 데이터를 담는 데이터 구조체인 데이터 프레임 인덱스 : 관계형 데이터베이스 관리 시스템(RDBMS)의 기본키(PK)처럼 개별 데이터를 고유하게 식별하는 키 시리즈와 데이터 프레임은 모두 인덱스를 키로 가지고 있음 시리즈는 컬럼이 하나 뿐인 구조체, 데이터 프레임은 컬럼이 여러 개인 데이터 구조체 2. 시리즈(Series)와 데이터 프레임(DataFrame) 1) pandas 임포트 import p.. 2023. 5. 29.
[빅데이터] 파이썬 빅데이터 분석 패키지 - numpy 1. numpy 개요 Numerical Python을 의미 → 파이썬에서 선형 대수 기반의 프로그램을 쉽게 만들 수 있도록 지원 루프를 사용하지 않고 대량 데이터의 배열 연산을 가능하게 함 → 빠른 배열 연산 속도를 보장 2. numpy 배열 생성 1) numpy 임포트 import numpy as np #넘파이 임포트 2) numpy 생성 a1=np.array([1,2,3])#넘파이 생성 print(a1)#결과 : [1 2 3] 3) numpy 타입, 크기, 차원 print('array1 type : ',type(a1) )#결과 : array1 type : 배열의 타입 print('array1 shape : ', a1.shape)#결과 : array1 shape : (3,)배열의 크기 print('ar.. 2023. 5. 28.
[Python] 백준 14888 연산자 끼워넣기 백준 14888 연산자 끼워넣기 문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다. 예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(×) 1개, 나눗셈(÷) 1개인 경우에는 총 60가지의 식을 만들 수 있다. 예를 들어, 아래와 같은 식을 만들 수 있다. 1+2+3-4×5÷6 1÷2+3+4-5×6 1+2÷3×4-5+6 1÷2×3-4.. 2023. 5. 27.
[Python] 백준 2580 스도쿠 (시간 초과) 백준 2580 스도쿠 문제 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루어진 정사각형 판 위에서 이뤄지는데, 게임 시작 전 일부 칸에는 1부터 9까지의 숫자 중 하나가 쓰여 있다. 나머지 빈 칸을 채우는 방식은 다음과 같다. 각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 굵은 선으로 구분되어 있는 3x3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 위의 예의 경우, 첫째 줄에는 1을 제외한 나머지 2부터 9까지의 숫자들이 이미 나타나 있으므로 첫째 줄 빈칸에는 1이 들어가야 한다. 또한 위쪽 가운데 위치.. 2023. 5. 26.
[Python] 백준 9663 N-Queen (시간 초과) 백준 9663 N-Queen 문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (1 ≤ N < 15) 출력 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 제출 n=int(input()) a=0 l=[0]*n def ch(s): for i in range(s): if l[s]==l[i] or abs(l[s]-l[i])==s-i: return False return True def nq(s): global a if s==n: a+=1 else: for i in range(n): l[s]=i if ch(s): nq(s+1) .. 2023. 5. 25.
[Python] 백준 15652 N과 M(4) 백준 15652 N과 M(4) 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 제출 n,m=map(int,input().split()) l=[] de.. 2023. 5. 24.
728x90