문제 기술 n(1이상 20이하 정수)개 계단을 바닥에서 위로 올라가려고 한다. 계단을 올라갈 때 한 번에 1개, 3개 혹은 4개의 계단만 오를 수 있다. 바닥에서 가장 위의 계단으로 올라갈 때, 올라가는 방법의 수를 구하는 프로그램을 작성하시오. 입력 형식 첫 번째 줄에 양의 정수 n이 주어진다. 출력 바닥에서 가장 위의 계단으로 올라가는 방법의 수를 출력한다. 입력 예 및 출력 예 8 // 25 나의 코드 import sys n = int(sys.stdin.readline()) def dpstair(n): C = [0 for i in range(n+1)] C[0] = C[1] = C[2] = 1 C[3] = 2 for i in range(4, n+1): C[i] = C[i-1] + C[i-3] + C[..
문제 프로그래머스 level3 입국심사 문제를 변형한 문제이다. 공항에서 사람들의 입국을 심사하는 심사대가 k(k = 1 혹은 2)개있다. 사람들이 입국심사를 받기 위하여, 심사대 바로 앞에서 한 줄로 서서 기다린다. k개의 심사대 중 하나가 비어있으면(심사받는 사람이 없으면), 먼저 도착한 사람이 비어 있는 이 심사대에서 심사를 받는다. 입국심사를 받기 위한 각 사람의 심사대 앞에 도착하는 시간과 심사받는데 걸리는 시간이 주어진다. 각 사람이 심사대 앞에 도착한 시간에 대한 정보는, 바로 이전 사람이 심사대 앞에 도착한 시간과의 차이(분)로 주어진다. 각 사람이 심사를 받기 위하여 기다리는 시간 (심사시간은 제외)의 평균을 소수점 이하 1자리까지 (소수점 이하 2째 자리에서 반올림) 출력하는 프로그램을..
문제 프로그래머스 level3 입국심사 문제를 변형한 문제이다. 공항에서 사람들의 입국을 심사하는 심사대가 k(k = 1 혹은 2)개있다. 사람들이 입국심사를 받기 위하여, 심사대 바로 앞에서 한 줄로 서서 기다린다. k개의 심사대 중 하나가 비어있으면(심사받는 사람이 없으면), 먼저 도착한 사람이 비어 있는 이 심사대에서 심사를 받는다. 입국심사를 받기 위한 각 사람의 심사대 앞에 도착하는 시간과 심사받는데 걸리는 시간이 주어진다. 각 사람이 심사대 앞에 도착한 시간에 대한 정보는, 바로 이전 사람이 심사대 앞에 도착한 시간과의 차이(분)로 주어진다. 각 사람이 심사를 받기 위하여 기다리는 시간 (심사시간은 제외)의 평균을 소수점 이하 1자리까지 (소수점 이하 2째 자리에서 반올림) 출력하는 프로그램을..
문제 오름차순으로 정렬된 n(2이상 100,000이하 정수)개의 정수(1,000,000,000이하 양의 정수) 중 K(양의 정수)와 가장 가까운 정수를 찾는 프로그램을 작성하시오. K와 가장 가까운 정수가 여러 개일 경우, 이들 중 작은 수를 출력하시오. 요구 조건: 이진 탐색(binary search)을 이용해야 한다. 입력 예시 1 5 // n 20 30 40 55 60 // n개의 정수 36 // K 출력 예시 1 40 입력 예시 2 13 20 30 40 55 60 70 75 80 85 90 91 93 100 92 출력 예시 2 92 나의 풀이 n = int(input()) num_list = list(map(int, input().split())) K = int(input()) def binary..
문제 양의 정수 M, e, n, d에 대하여 C = M^e mod n을 구하시오. (mod는 나머지를 구하는 연산이다). 그리고 위의 C에 대하여 C^d mod n을 구하시오. 단, 양의 정수 a, k, n에 대하여 ak mod n을 구하는 방법은 다음을 이용한다. a^k mod n = a mod n if k = 1 = (a^2/k mod n)^2 mod n if k가 짝수 = (a*(a^k-1 mod n)) mod n if k가 홀수 입력 예시 15 3 7 33 // M e d n 출력 예시 9 15 나의 풀이 처음에 그냥 쉽게 생각했다. 거듭제곱을 구하는 함수 작성(재귀함수를 이용) 문제의 조건을 그대로 mod 함수로 만들어서 mod한 값을 다시 mod 함수에 넣어서 print하기 이렇게 생각하여 d..
공부 기록 이 블로그와, 노션에 하나하나 기록해 둠 1Q 목표 리뷰 개발 두시간 이상 하기 -> 81.6%(71일 중 58일.. 못한 13일은 대부분 하루종일 다른 일이 있거나 할 때였다.) 아침 10시 전 기상 -> 94.3%(71일 중 66일) 1Q 잘한 점 아침 10시 전에 못일어난 적이 아마도.. 손에꼽을듯 항상 잘 일어났다. 개발도 웬만하면 두시간 이상씩 했다. React를 본격적으로 공부하고 있고, Node.js 또한 시작했음 알고리즘도 시작함 (학교수업) 1Q 못한 점 저녁 약속이 조금 많았고, 친구 만나느라 공부시간이 좀 줄었던 점은 아쉽다. 2Q 목표 6월까지 마무리해서 React / Node.js를 이용해서 풀스택 토이프로젝트 할 준비를 마치기 이거 방학때 잘 마무리해서 현장실습 인턴 ..

프로미스 자바스크립트와 노드에서는 주로 비동기를 접한다. 특히 이벤트 리스너를 사용할 때 콜백 함수를 자주 사용한다. ES2015부터는 자바스크립트와 노드의 API들이 콜백 대신 프로미스(Promise) 기반으로 재구성되며, 악명 높은 콜백 지옥 현상을 극복했다는 평가를 받고 있따. 프로미스는 반드시 알아둬야 하는 객체이므로 여기뿐만 아니라 다른 자료들을 참고해서라도 반드시 숙지해야 한다. 프로미스는 다음과 같은 규칙이 있다. 먼저 프로미스 객체를 생성해야 한다. const condition = true; // true면 resolve, false면 reject const promise = new Promise((resolve, reject) => { if (condition) { resolve("성공"..
React 공부를 책을 통해 하고 있던 도중 (출처: 벨로퍼트 리액트를 다루는 기술) utils.scss 파일을 불러올 때 현재 수정하고 있는 scss 파일 경로가 어디에 위치하더라도 앞부분에 상대 경로를 입력할 필요 없이 styles 디렉토리 기준 절대 경로를 사용하여 불러올 수 있게 하기 위해 webpack.config.js에 커스터마이징 된 sass-loader를 webpack.config.js에 넣어주려고 하니 options has an unknown property 'includePaths'. These properties are valid 라는 오류가 발생했다. 이게 무슨 에러인고 하니 .. 현재 내가 내려받은 sass-loader의 버전이 호환 불가능한 버전이기 때문에 발생하는..
문제 주식 투자를 즐기는 홍길동은 n일 동안 어떤 회사의 주식을 다음과 같이 매매한다: 주식 한 주를 한 번만 사서 이를 다음에 한 번 팔 수 있다. 홍길동은 n일 동안 주식 매매(한번 사서 한번 팜)를 하여 얻은 이익에 대하여, 얻을 수 있는 최대 이익과 얼마나 차이가 있는지를 알고 싶어한다. 그래서 이 기간동안 얻을 수 있는 최대 이익을 계산하기로 하였다. 예를 들어, 7일 동안 주식 가격이 (30, 25, 50, 10, 20, 40)과 같을 때, 최대 이익은 네째 날 주식을 사서 마지막 날 팔면 이익이 30(=40–10)이다. n일 동안 주식 가격이 주어질 때, 얻을 수 있는 최대 이익을 구하는 프로그램을 작성하시오. 입력 형식 첫째 줄에는 n이 주어진다. n은 2 이상 100,000 이하의 정수이..
어제에 이어 오늘도 지금까지 계속 알고리즘만 풀었고.. 일단 이 문제를 풂으로써 3문제 중 2문제를 제대로 끝냈다. 마지막 한 문제는, 전에 풀었으나 12개의 테스트 케이스 중 10개나 타임아웃 / 런타임 에러가 떴고.. 그래서 다시풀어봐야한다.. 하지만 시간이 좀 있으니 오늘은 드디어 다른 공부를 할 수 있게 됐다. 하 행복하다.. 문제 주식 투자를 즐기는 홍길동은 어떤 회사의 주식을 다음과 같은 패턴으로 매일 주식 거래를 한다: (1) 주식 한 주를 사든지, (2) 이미 샀던 주식 중 일부를 파든지, 혹은 (3) 매매를 하지 않는다. 홍길동은 어떤 기간 동안 주식 매매를 하여 얻은 이익에 대하여, 얻을 수 있는 최대 이익과 얼마나 차이가 있는지를 알고 싶어한다. 그래서, 이 기간 동안 얻을 수 있는 ..