반응형 전체 글338 파이썬의 iterator 사용법 1. 개요 파이썬으로 알고리즘을 풀다보면 간혹가다 iterator를 써야하는 경우가 생긴다. 이번 기회에 한번 사용법을 알아보자 2. 사용법 iterable한 객체에서 반복자를 얻어오는 방법은 다음과 같다 iterable = [ 1, 2, 3, 4, 5 ] it = iter(iterable) 값을 꺼내오려면 다음과같이 next 함수를 사용하면 된다 iterable = [ 1, 2, 3, 4, 5 ] it = iter(iterable) next(it) #1 next(it) #2 next(it) #3 next(it) #4 next(it) #5 3. hasnext 파이썬의 반복자에는 크나큰 결점이 있다. hasnext 메소드가 없다. 더이상 next가 없는 상황에서 next를 호출하면 exception을 일으.. 2023. 1. 6. CordovaPlugin 기초 1. Cordova Plugin이란 plugin은 Cordova Webview와 native platform간의 통신을 해 주는 Package이다. 이를통해서 Webview에서 할수 없는 일들을 native에서 실행을 할 수 있다. Plugin은 하나의 자바스크립트 인터페이스로 이루어져 있으며 인터페이스 뒤에 여러 네이티브 코드를 숨길 수 있다 2. Plugin 설치 아래 두 커맨드중 하나로 설치 가능하다. npm에 cordova plugin이 설치되어있으면 아래것을 사용하자 cordova plugin add https://github.com/apache/cordova-plugin-device cordova plugin add cordova-plugin-device Plugin의 폴더에는 반드시 plug.. 2023. 1. 4. [프로그래머스] 사칙연산 https://school.programmers.co.kr/learn/courses/30/lessons/1843 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 연산 기호를 기준우로 좌우로 놔누면서 재귀를 호출한다 연산을 하면서 Max값과 Min값을 계속해서 기록한다 연산 기호를 기준으로 max값과 min값을 계산한다 MAX_DP = [[-987654321 for _ in range(201+1)] for _ in range(201+1)] MIN_DP = [[987654321 for _ in range(201+1)] for _ in range(201+1.. 2022. 12. 28. [백준 2042] 구간 합 구하기 풀이 세그먼트 트리를 이용한다 구글에서 검색해서 나오는 세그먼트 트리 방법들은 arr에 index를 이용하여 구현하는데 나는 그게 싫어서 class안에다가 range를 넣었다. 그러고 나니 생각보다 코드가 깔끔하게 나왔다. import sys class Tree: def __init__(self, sum, range): self.sum = sum self.range = range self.left = None self.right = None def makeTree(node, arr): if node.range[0] > node.range[1]: return 0 if node.range[0] == node.range[1]: node.sum = arr[node.range[0]] return node.sum .. 2022. 12. 27. [프로그래머스] 등대 해설 노드가 N개인데 N-1개로 모두 연결되어있다 => 트리구조 트리를 만든다. 트리에서 가장 끝의 리프는 불을 키지 않는다. 자식노드가 모두 불이 꺼져있으면 불을킨다 자식노드가 하나라도 불이꺼져있으면 불을 킨다 처음에 루트노드를 무조건 자식이 2개 이상인걸로 잡았다. 그런데 다시 문제를 풀어보니 루트노드는 아무거나 잡아도 상관없어서 1로 맘편하게 했다 from collections import deque import sys sys.setrecursionlimit(10**9) class Tree: def __init__(self,num): self.num = num self.childs = [] self.parentNode = None def printChilds(self): result = "" for.. 2022. 12. 26. 파이썬 얕은복사 깊은복사의 이해 파이썬으로 알고리즘을 풀다보면 파이썬의 주소값 체계 때문에 배열이 꼬이는 현상이 자주 발생한다. 이를 해결하기 위해 이번기회에 파이썬의 동작에 대해 완벽하게 이해해보자 1. 파이썬의 변수 할당의 의미 파이썬의 변수는 모두 포인터인가? 혹은 c++의 참조자인가? 에 대한 얘기가 많다. 찾아보니 파이썬의 variable은 해당 객체에 name을 binding 한다는 얘기가 있다. 무슨뜻인가? 바로 이런거다 a=1 1이라는 객체의 이름을 a 라고 하겠다! 라는 의미이다 2. C++ 포인터, 참조자와의 비교 한번 직접 실험해보자 python >>> a = 1 >>> b = a >>> a = 2 >>> b 1 C++ 포인터 #include #include int main() { int num = 1; int* a.. 2022. 12. 21. [알고스팟] 소풍 algospot.com :: PICNIC 소풍 문제 정보 문제 안드로메다 유치원 익스프레스반에서는 다음 주에 율동공원으로 소풍을 갑니다. 원석 선생님은 소풍 때 학생들을 두 명씩 짝을 지어 행동하게 하려고 합니다. 그런데 서로 algospot.com 해설 고등학교때 배운 조합 문제이다. 경우의 수가 중복되지 않도록 순서를 강제 해야 된다 import sys C = int(input()) for _ in range(C): N, M = map(int, sys.stdin.readline().rstrip().split()) flist = list(map(int, sys.stdin.readline().rstrip().split())) friends = [[] for _ in range(10)] i = 0 whil.. 2022. 12. 21. [알고스팟] 보글게임 algospot.com :: BOGGLE 보글 게임 문제 정보 문제 보글(Boggle) 게임은 그림 (a)와 같은 5x5 크기의 알파벳 격자인 게임판의 한 글자에서 시작해서 펜을 움직이면서 만나는 글자를 그 순서대로 나열하여 만들어지는 영어 algospot.com 해설 문제에서 적힌것과 같이 dp로 푸는 대표적인 문제이다. 문제와 부분문제의 개념에 대해 알아야 한다 나는 다음과 같이 정리했다 문제 : 문제에 주어지는 문제 부분문제 : 주어진 문제의 input에서 조각내어 input을 사용하는 문제 가령 인풋이 abcdef 가 들어왔다 하면, a를 빼면 bcdef 이렇게 조각내서 풀면 그게 부분문제 이다 부분문제로 완전탐색을 만들면 dp로 변환하기가 몹시 편리하다 1. 완전 탐색으로 풀기 아래 코드로 하면.. 2022. 12. 21. [알고스팟] 록 페스티벌 https://www.algospot.com/judge/problem/read/FESTIVAL algospot.com :: FESTIVAL 록 페스티벌 문제 정보 문제 커다란 공연장을 빌려서 록 페스티벌을 개최하려고 합니다. 이 페스티벌은 여러 날 동안 진행되며, 하루에 한 팀의 밴드가 공연장에서 콘서트를 하게 됩니다. 전체 www.algospot.com 풀이 대충 보아하니 무식하게 for문 돌려서 전체 케이스로 풀어도 될거 같은 조건인데 파이썬으로 그렇게 푸니 시간초과가 납니다. 다른사람들 답을 보니 c언어에서는 그냥 무식하게 포문만 돌려도 되던데 말이죠. 특정구간의 합을 빠르게 구하기 위한 알고리즘 방법으로는 세그먼트 트리, 그리고 합을 누적해서 배열을 만드는 방법이 있는데, 문제에서는 값의 수정이 .. 2022. 12. 20. 이전 1 ··· 9 10 11 12 13 14 15 ··· 38 다음 반응형