-
[2020_하계_모각코] 04주차(07/09)[CNU] Mogakco 2020. 7. 9. 17:10
04주차 목표 : 생활코딩 강의 -DATABASE1, DATABASE2-MySQL 수강 + BOJ에서 파이썬 2문제 이상 풀기
생활코딩 강의 -DATABASE1, DATABASE2-MySQL 수강
데이터베이스는 특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임으로, 최소의 중복으로 통합(integrated), 저장(stored)된 운영(operation) 데이터로 구성된다.(1) 통합 데이터(integrated data)
중복을 배제하나, 경우에 따라 불가피하게 중복을 허용하는 데이터다. 이러한 의도적 중복은 항상 파악하여 관리할 수 있으며, 이러한 것을 최소의 중복 또는 통제된 중복이라고 한다.
(2) 저장 데이터(stored data)
컴퓨터의 저장매체에 저장하여 관리하는 데이터를 의미한다.
(3) 운영 데이터(operation data)
단순한 데이터의 집합이 아니라 그 조직의 기능을 수행하는 데 없어서는 안 될 필수의 데이터를 의미한다.
(4) 공용 데이터(shared data)
어느 하나의 응용프로그램이나 응용시스템을 위한 데이터가 아니라, 그 조직의 여러 사용자와 여러 응용시스템들이 서로 다른 목적으로 데이터를 공동으로 이용할 수 있게 한다.
BOJ에서 파이썬 2문제 이상 풀기 (DP)
2193 이친수
https://www.acmicpc.net/problem/2193
2193번: 이친수
0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않
www.acmicpc.net
#BOJ 2193 import sys N = int(sys.stdin.readline()) dp = [0, 1, 1] for i in range(3, N+1) : dp.append(dp[i-1] + dp[i-2]) print(dp[N])
먼저, N=1, 2, 3, 4 ...일때 값을 찾는다.
N=1, answer=1(1)
N=2, answer=1(10)
N=3, answer=2(100, 101)
N=4, answer=3(1000, 1010, 1001)
N=5, answer=5(10000, 10001, 10101, 10010, 10100)
-> N이 3이상일 때, 무조건 이친수는 10으로 시작한다.
-> answer[N] = answer[N-1] + answer[N-2] 라는 점화식을 찾을 수 있다.
#BOJ 2193 (오류 코드) N = int(input()) dp = [0] * (N+1) dp[1] = 1 dp[2] = 1 if N >= 3 : for i in range(3, N+1) : dp[i] = dp [i-1] + dp [i-2] print(dp[N])
결과는 '런타임 에러'였다.
시간 초과를 막고자 N을 입력받을 때도 sys모듈을 사용해주고, dp는 [0, 1, 1]으로 다시 처음부터 설정해주었다.
11722 가장 긴 감소하는 부분 수열
https://www.acmicpc.net/problem/11722
11722번: 가장 긴 감소하는 부분 수열
수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} �
www.acmicpc.net
#BOJ 11722 N = int(input()) A = list(map(int, input().split())) dp = [1]*N for i in range(N-1, -1, -1) : for j in range(N-1, i-1, -1) : if A[i] > A[j] : dp[i] = max(dp[i], dp[j]+1) print(max(dp))
앞에서부터 차례대로 피보나치를 이용하면 된다.
현재 dp값과 순차적인 dp값+1을 비교해서 더 큰 값을 dp값으로 설정해준다.
04주차 회고록
시간이 없어서 생활코딩의 DATABASE 강의는 다 수강하지 못했다. DATABASE1에서는 Spreadsheet를 활용해서 간단하게 데이터베이스를 소개해줬기 때문에 이해하기 쉬웠다. DATABASE2에서는 MySQL을 이용한 실습이 진행될 것이라고 했었다. 하지만 데이터베이스에 대한 기본적인 설명을 듣고 MySQL을 설치하는 과정에서 시간이 너무 많이 소요되어서 실습까지 다 수강하지는 못해 아쉬웠다. 오늘도 백준 알고리즘에서 DP 관련 문제를 풀어봤는데 알고리즘을 구현하는 사고까지 문제당 30~40분씩 걸렸다. 어쩌면 DP 문제는 점화식과 규칙성을 찾으면 쉽게 해결할 수 있다는 장점이 있지만, 그것을 찾는 것과 코드로 구현하는 것이 어려워서 난항을 겪고 있다... 모각코 활동이 아니었으면 DP문제는 건드리지도 않고 넘어갔을 것 같은데, 이번 활동을 통해서 DP 문제를 도전해보고 알고리즘적 사고를 계속해서 강화할 수 있었다. DP문제가 끝나면 기하나 수학 관련 문제도 풀어보고 싶고 실제 코딩테스트와 유사한 문제들도 꼭 풀어보고 싶다!
'[CNU] Mogakco' 카테고리의 다른 글
[2020_하계_모각코] 06주차(07/16) (0) 2020.07.16 [2020_하계_모각코] 05주차(07/14) (1) 2020.07.14 [2020_하계_모각코] 03주차(07/07) (0) 2020.07.07 [2020_하계_모각코] 02주차(07/02) (1) 2020.07.02 [2020_하계_모각코] 01주차(06/30) (3) 2020.06.30