전체 글
프로젝트 본격적인 시작!
시험기간이라 한동안 포스팅을 못했는데ㅠㅠ... 어제 종강하자마자 멋사활동이 진행됐다. (시험보자마자 멋사로...!) 이번 활동에서는 지금까지 회의로 진행한 프로젝트를 어떻게 구현할지 조금 더 토의해보고, 방향성을 잡는 것을 위주로 진행했다. 우리 팀은 동아리 관리 플랫폼을 기획하는 만큼, 웹과 앱을 모두 충족시켜야 했고, 자연스럽게 리엑트 네이티브를 사용하는 방향으로 자리잡았다. 저번에 포스팅했던 자바스크립트도 (이어서 다 포스팅하진 못했지만) 전부 훑었고, 다음 만남 전까지는 와 강의를 수강하기로 했다. https://opentutorials.org/course/3332 WEB2 - Node.js - 생활코딩 수업소개 이 수업은 JavaScript를 이용해서 Node.js를 제어해 동적으로 HTML 코..
이친수_2193
2193 N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램을 작성하시오. 이친수: 이진수중 다음의 두 조건을 만족하는 수. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 그러므로 점화식을 세울 때 우리는 끝의 문자에 따라 d[n][1], d[n][0]으로 나누어 생각하여야 한다. 이친수는 0으로 시작하지 않으므로 초기값은 d[1][1] = 1, d[1][0] = 0 이다. 그렇다면 이 초기값을 기준으로, 나머지 점화식을 세울 수 있다. 여기서는 두번째 조건에 집중하면 된다. 1은 연속해서 사용할 수 없기 때문에 두번째 조건에 집중하면 점화식은 d[n][1] = d[n-1][0], d[n][0] ..
쉬운 계단 수 _ 백준 10844
10844 N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구하는 프로그램을 작성하시오. (0으로 시작하는 수는 없다.) 계단 수 : 인접한 모든 자리수의 차이가 1인 수. 여기서 d[n] = 길이가 N인 계단 수의 개수라고 볼 수 있지만, 여기서 우리는 인접한 수의 차이가 1 인것도 고려해야 한다. 그렇다면 마지막 숫자를 배열에 추가하여 d[n][i] = 길이가 n인 계단 수이며, 마지막 숫자가 i인것으로 하여 점화식을 세우면 된다. 처음에 잘못생각해서, 마지막 숫자가 아니라 첫번째 숫자로 생각했더니 문제가 발생했기 때문에... 마지막 숫자라는 것을 유의했으면 좋겠다. 따라서 점화식을 세우면 d[n][i] = d[n-1][i-1] + d[n-1][i+1]이다. 다만, i가 0, 9 일 때에는..
멋사 UI UX 2주차 강의 - 어도비 XD
프로토타이핑. draw.io 를 통해서 실습을 진행하였다. 도형을 넣어서, 해당 내용 안에서 서비스의 흐름 기획도를 구현할 수 있다. 와이어프로그램 구글에 adobexd wires라고 치거나아래 링크로 들어가면 다운받을 수 있다. https://www.behance.net/gallery/55462459/Wires-free-wireframe-kits-for-Adobe-XD Wires, free wireframe kits for Adobe XD Two FREE wireframe UX kits for mobile and web, built exclusively for Adobe XD. Go from idea to design faster with a comprehensive set of ready-to-use..
1, 2, 3 더하기 5_ 백준15990
15990 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 단, 같은 수를 두 번 이상 연속해서 사용해서는 안됩니다. 1,2,3더하기의 심화버전인 문제이다. n이 주어졌을 때 1,2,3만의 합으로 구하는 것이며, 같은 수를 두번 이상 연속해서 사용하면 안된다는 조건이 추가되었다. 그렇다면, 같은 수인지 아닌지 확인하기 위한 추가적인 절차가 필요하다. 이를 위해서 정수의 값을 저장할 부분을 이차원 리스트로 만들었다. 즉, n이 주어졌을 1,2,3의 합으로 나타내는 경우의 수를 d[n]이라 하면 d[n] = d[1] + d[n-1] d[n] = d[2] + d[n-2] d[n] = d[3] + d[n-3] 이므로, n이 주어졌을 때 위의 세 사례로 나..
카드구매하기 _ 백준 11052& 백준 16194
이번에도 역시 DP와 관련된 문제이다. 11052 카드 N개를 구매하는 비용의 최대값을 구하는 문제. 카드 N개를 구매하는 비용의 최대값을 d[N]이라고 하면 d[N] = max(d[i] + d[N-i]) 이다. 그러므로 d[1]의 값을 넣고, 그 다음 값부터는 for문을 통해서 확인하며 수행한다. 여기서 j의 값이 i/2인 이유는 i/2이후부터는 d[j] + d[i-j]의 순서만 다를 뿐, 결과는 같기 때문에 계산을 줄이고자 값을 제한한 것이다. //11502 - 카드 구매하기 #include using namespace std; int d[1001]; int f[1000]; int main(void) { int count; int num; int i = 1; scanf("%d", &count); nu..
1주차 강의 _ UI/UX 디자인
지금까지는 Django, python중심으로 강의를 들었는데, 이제 본격적으로 멋쟁이 사자처럼 활동을 시작한다! 이번 멋쟁이사자처럼에서는 본격적으로 '창업'에 중점을 둬서 시작한다고 이야기를 들었는데, 그래서인지 강의의 내용도 UI/UX와 관련된 이야기라고 한다. 실제로 피로그래밍에서 프로젝트를 진행할때에도 로고나, 디자인 부분에서 다들 어려움을 많이 겪었어서 제대로 배워보고싶었던 분야이니만큼, 이번 기회에 디자인 감각을 좀 키워보려고 한다! 이번 UI/UX 강의에서는 AdobeXD를 사용한다고 하는데, 해당 툴은 CYMK를 사용해서 온라인용에는 적절하지만 인쇄용에는 적절하지 않다고 한다. 1. UI / UX란? → UX (User eXperience) 는 사용자의 경험을 디자인하는 것이고 → UI (U..
2xn 타일링 _ 백준 11726, 백준 11727
11726번 문제와 11727문제는 하나의 조건만 달라서 한번에 정리해보려고 한다. 11726 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 2×n 타일의 우측에 칸을 채워넣는 방식으로 생각하면, 방법은 두가지이다. 1×2가 들어가게 되면 한칸이 완전히 차게 되고, 2 X n-1이 남는다. → d[n-1] 2 X 1 이 들어가게 되면 두칸이 차게되고, 2 X n-2가 남는다 → d[n-2] DP문제이니만큼, 점화식을 세워보면, 2 x n 크기의 타일을 채우는 방법의 수를 d[n]이라고 하면 d[n] = d[n-1] + d[n-2]이 되는 것이다. 여기서 조금 헤맨 부분을 이야기하자면, 그냥 이렇게 세워서 문제를 풀다보니 계속 답이 틀렸다고 하는 문제가 ..
1로 만들기_ 백준 1463
1로만들기는 DP를 활용해서 푸는 문제이다. 문제에서 제시되는 내용으로는 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이고, 이를 활용하여 정수 N이 주어졌을 때, 연산 세 개를 적절히 사용해서 1을 만드는 연산횟수의 최솟값을 구하는 것이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 그러면 D[i]가 i를 1로 만드는데 필요한 최소 연산횟수라고 했을 때, D[i] = D[i/3] + 1 D[i] = D[i/2] + 1 D[i] = D[i-1] + 1 셋중에 하나가 최솟값으로 들어가게 된다. 기본적으로 D[1] = 0이므로, 이를 기반으로 해서 bottom up 방식으로 코드를 구현하면 아래와 같다. #include #include u..
다이나믹 프로그래밍 기초
오늘부터는 다이나믹 프로그래밍 (DP)와 관련되어서 문제를 쭉 풀어보려고 한다. 다이나믹 프로그래밍의 구현 방식에는 크게 두가지 방법이 있다. 1. Top-down 방식 : 재귀를 활용해서, 큰 문제를 작은 문제로 쪼개는 방식 (ex 피보나치) 2. Bottom-up 방식 : 반복문을 활용해서, 작은 문제를 모아 큰 문제를 해결하는 방식 이 두 방식의 시간차이는 경우에 따라 다르게 때문에, 일단 둘중에 하나를 먼저 골라서 공부하면서 익숙해지는 것이 중요하다고 한다. 기본적으로는 스택오버플로우와 같은 문제가 발생한다면 이는 시간차이라기보다는 코드의 문제일 가능성이 크기 때문에 일단 기초적인 수준에서는 둘중 하나를 중점적으로 공부하는 것이 중요하다는 것! 다이나믹 문제 풀이의 전략으로는 "문제에서 구하려는 ..