분류 전체보기 96

[프로그래머스][python] 주식 가격

문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예pricesreturn [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 풀이 스택을 활용하여 풀었다. 스택에 집어넣으면서, 스택 맨위값과 비교하면서 감소하면(stack[num_element-1][1] > price 상황)스택에서 pop하며 현재의 시간에서 price의 시간을 뺴서(idx - ith) 떨어지지 않은 기간을 기록한다. for문을 다 돌고, stack에 남아있다면..

[4장 고차함수] 4.5 합성 함수

합성 함수 : 수학에서 합성함수와 같다. 함수를 매개변수로 받고, 함수를 반환할 수 있는 고차 함수를 이용해서 두 개의 함수를 결합하는 것. fun main(args: Array){ println(composed(3)) } fun composed(i : Int) : addThree(twice(i)) fun addThree(i: Int) = i+3 fun twice(i: Int) = i*2 composed 함수가 합성 함수의 예시이다. 이 함수를 일반화해보자. fun main(args: Array){ val addThree = { i :Int -> i+3 } val twice = { i : Int -> i*2 } val composedFunc = addThree compose twice println(co..

[프로그래머스][python] 다리를 지나는 트럭

문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간다리를 지난 트럭다리를 건너는 트럭대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] [4] [5,6] 4 [7] [4,5] [..

[프로그래머스][python] 프린터

문제 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다. 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 ..

[4장 고차함수] 커링함수 - 확장함수 만들기

지난번에는 일반 함수와 커링함수를 직접 만들어서 구현하였다. 코틀린은 기본함수로 커링을 제공하지 않기때문에, 이를 지원하기 위해 커링함수를 확장함수로 구현해본다. 다음 코드는 매개변수 3개인 함수를 커링함수로 바꾸어주는 함수 코드이다. fun ((P1,P2,P3)->R).curried() : (P1) -> (P2) -> (P3) -> R = { p1:P1 -> {p2:P2 -> {p3:P3 -> this(p1,p2,p3) } } } fun ((P1) -> (P2) -> (P3) -> R).uncurried() : (P1,P2,P3)->R= { p1:P1, p2:P2, p3:P3 -> this(p1)(p2)(p3) } curried 함수를 통해 커링함수 아닌 것을 커링함수로 구현하고, uncurried 함..

[4장 고차함수] 커링함수

커링(currying) : 여러개의 매개변수 받는 함수를 분리 -> 단일매개변수로 받는 체인 함수 아래의 예시를 보자. fun addTwo(a : Int, b : Int) : Int = a+b fun addTwoCurried(a : Int) : {b : Int -> { a+b } } addTwo와 같이 a,b 두개의 매개변수로 받는 함수를 addTwoCurried와 같이 매개 변수 하나씩 받으며 하나의 체인으로 연결되는 함수를 의미한다. addTwo(1,2) 와 addTwoCurried(1)(2) 와 동일한 3을 출력한다. 커링으로 변환해주는 함수는 아래와 같을 것이다. fun addTwo(a : Int, b : Int) : Int = a+b fun addTwoCurried(a : Int) : {b : ..

[프로그래머스][C++] 기능개발

문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자..

[Redux] react-redux 사용시 Invalid hook call at Provider

redux를 사용하기 위해서 적용하던중, import React from "react"; import ReactDOM from "react-dom"; import { createStore } from 'redux'; import { Provider } from 'react-redux'; import { composeWithDevTools } from 'redux-devtools-extension'; import RootReducer from './redux/RootReducer'; import App from "./App"; import reportWebVitals from "./reportWebVitals"; import "./css/index.css"; const store = createStore(..

[4장 고차함수] 4.3 부분 적용 함수

부분 함수와 이름이 비슷하지만 관계없다. 부분 적용 함수 : 말그대로 부분적으로 적용한 함수이다. 매개변수의 일부만 전달받았을 때, 제공받은 매개변수만 가지고 연산하는 함수이다. fun main(args: Array){ val func = {a : String, b : String -> a+b} val partiallyAppliedFunc = func.partial("Hi"); // 매개변수 a,b중 a만 적용 : 부분적용됨 val ret = partiallyAppliedFunc(" Hello");// a,b 둘다 적용된 상태 println("result : $ret ") } fun ((P1,P2)-> R).partial(p1: P1) : P2 ->R { return { p2 -> this(p1,p2) ..

[4장 고차함수] 4.2 부분함수

부분함수 : 모든 가능한 입력 중, 일부 입력에 대한 결과만 정의한 함수. fun triple(x: Int) = x*3 fun partialTriple(x:Int) : Int = { if(x>100) x*3 else { throw IllegalArgumentException() } } 위의 예시와 같이 100이하의 숫자에 대해서(일부 입력에 대해서) 결과만 정의되어있고, 나머지는 exception을 출력한다. 이러한 함수를 부분함수하고 한다. 연습문제 4-1을 보며 익숙해져보자. 연습문제 4-1 : PartialFunction 클래스에 invokeOrElse 함수와 orElse 함수를 추가해보자. invokeOrElse함수는 입력값 p가 조건에 맞지 않을 때 기본값 default를 반환한다. orElse..

반응형