grapyberry의 등록된 링크

 grapyberry로 등록된 네이버 블로그 포스트 수는 13건입니다.

python 후위표기 계산기 [내부링크]

스택을 이용하여 후위표기법으로 표시된 수식을 계산하는 python 코드 1 5 8 10 3 4 + + 3 + * 2 + + + . 후위표기법으로 표현된 수식 예시 : 10 30 2 5 2 1 - + 4 +* 3 + - - = ("="는 수식의 끝을 나태내기 위해 임의로 넣은 기호) 이를 다시 중위표기법으로 표현하면 10 - (30-(( 2*( (5+(2-1)) +4) )+3)) = 답은 3 python code 1. stack code class stack: def __init__(self): self.stack=[] def push(self,item): self.stack.append(item) def pop(self): if len(self.stack): return self.stack.pop() def dis(self): print(self.stack) def lens(self): return len(self.stack) 2. 연산 실행 함수 def operator(a,b,op

백트래킹(Backtracking) 활용 예 [내부링크]

미로 내의 출발지(2)에서 시작하여 도착지(3)에 도달할 수 있는가 여부를 반환하는 문제를 통해 백트래킹의 개념을 간단히 확인 [요약] 백트래킹은 해를 찾는 과정에서, 현재 임시로 구한 해가 최종해에 도달 가능한가를 검사한다. 이를 통해 확인이 불필요한 경우의 수를 제외해가며 최종해를 찾는다. 백트래킹 [백트래킹과 깊이우선탐색(DFS)] 백트래킹은 DFS와 자주 비교된다. 이번 길찾기 문제를 이용해 비교하자면, DFS를 이용하면 경우 출발지와 이어진 모든 길을 탐색하고 그중 도착지와 연결된 곳이 있는지 확인할 수 있다. 백트래킹을 이용하면 출발지와 연결된 길이 얼마나 있든, 또 그중에서 도착지로 연결된 길이 몇 개든 상관없이, 출발지와 도착지를 연결하는 경로를 하나라도 찾으면 해가 존재 함을 반환한다. 예를 들어 만일 출발지에서 도착지로 가는 최단 경로를 찾는경우 백트래킹이 아닌 모든 경로를 확인가능한 DFS이용하는 것이 적절하다. [문제] 아래와 같이 0,1,2,3의 숫자로 구성된

카운팅 정렬 [내부링크]

정렬할 자료값을 정수로 변환해, 그 정수 인덱스 위치에 해당 자료값의 수를 저장하여 이를 통해 자료를 정렬하는 방식 1. 아래와 같이 {1,2,1,3,3,1,4}의 자료가 있을 때, 4(최대 값)+1 크기의 리스트를 생성한다. (혹은 배열 등) 생성된 리스트를 count라고 하면 각 자료값과 일치하는 인덱스에 자료값의 수를 기록한다 카운팅 정렬 2. count가 배열할 위치를 가리키도록 하기위해서, count의 data를 앞의 값과 합한 값으로 수정한다. count 3. 아래와 같이 count의 data-1의 위치에 대응되는 자료값을 위치시키며 정렬한다. 위를 보면 count[4]의 값 또한 -1 한다 그이유는 아래와 같이 같은 자료값을 다시 입력할때 그 다음 위치에 정렬하기 위함이다. python 실행코드 기존코드 def counting_sort(lst,max_num): #입력 리스트, 최대 자료값 count = [0]*(max_num+1) #카운트 리스트 lst_len = len

선택 정렬 [내부링크]

선택 정렬 간단히 말하자면 가장 크거나 작은 수를 뽑아서 맨 앞으로, 또 뽑아서 그 다음으로 두며 정렬해가는 방법이다. 다음과 같은 자료를 올림차순으로 정렬하자면 1회차에선 가장 작은 수인 1을 index 0의 수와 교체한다. -> 2회차에선 index 1~ index 4중 에서 가장 작은 수인 2를 index 1과 교체한다. -> 이는 n개의 자료가 있을 때, n-1차까지 수행된다.(위를 예로 들자면 index 3 을 정렬하면 index 4까지 정렬된 상태이므로) (위의 경우 2회차에서 모든 자료가 정렬되었다.) --------------------------------------------------------------------------------------------------- 이를 편의를 위해 문법이나 자료형과 상관없이 코드로 나타내면 int lst[5] = {4, 4, 3, 1, 2} int n = lst.length() for (int i=0; i<n; i++){

배열의 부분 집합 구하기 [내부링크]

부분 집합 비트 연산자를 이용해 배열의 모든 부분 집합을 구하는 방법 (python 문법 이용) 다음의 코드를 이용해 배열의 부분 집합을 구할 수 있다. lst =[4,5,6] n = len(lst) for i in range (1<<n): ##point 1 for j in range (n): ## point 2 if i & (1 << j): ## point 3 print(lst[j],end = " ") print() ##point4 point 3의 i &(1<<j) 가 코드의 핵심으로 이 연산의 기능을 실제 실행 순서와 다르더라도 이해를 돕기 위해 표로 나타내면 다음과 같다. (&는 각 비트를 and 연산하고, 1<<j는 j만큼 1의 비트를 좌측으로 이동 시킨다. 따라서 1<<n 또한 2^n을 나타낸다.) i의 비트를 배열 {4,5,6}의 각 위치의 원소 유무로 보면 0은 해당 원소가 없는 경우 1은 해당 원소가 있는 경우가 되어 i의 비트 배열 자체가 배열{4,5,6}의 부분 집

보이어 무어 알고리즘 [내부링크]

보이어 무어 알고리즘 보이어-무어 알고리즘은 문자열에서 문자열을 검색하는 알고리즘으로 검색하려는 문자열의 마지막 문자를 우선으로 비교하고, 다음으로 비교할 위치를 가리키는 index값을 효과적으로 조정해 비교 횟수를 줄인다. 1. 마지막 문자 우선 비교 찾으려는 문자열이 "abc"로 크기가 3이다. 따라서 첫 index값 또한 마지막 문자 비교를 위해 index=3-1 이 된다.(-1은 인덱스가 0부터 시작하므로) 아래의 "sesenn..."의 경우 매 비교마다 "abc"와 일치하는 문자가 없으므로 3씩 건너뛰며 검색을 수행한다. -> 7번의 비교로 끝 (마지막"dd"의 경우 인덱스 범위를 초과해 자동으로 검색 실패) 마지막 문자 우선비교 2. 효과적인 index값 조정 아래와 같이 "send"라는 문자열을 "sesann..."의 문자열 속에서 찾는다면, 첫 비교에서 "a"는 "send"에 포함되지 않으므로 "send"의 크기인 4만큼 index를 이동한다. 두 번째 비교에선 "s"

버블 정렬 [내부링크]

버블 정렬 버블정렬이란 간단하게 큰 수를 차례로 뒤로 밀어내는 정렬방법이라 말할 수 있다. 예를 들어 아래와 같은 리스트 {5, 4, 3, 2, 1} 가 있을 때 (자료 위치는 인덱스 0,1,2,3,4를 이용한다.) 1회 정렬에선 5가 index 4번으로 2회 정렬에선 4가 index 3번으로 3회 정렬에선 3이 index 2번으로 4회 정렬에선 2가 index 1번으로 5회 정렬에선 1이 index 0번으로 정렬되며 사실상 5회차의 정렬은 4회차에서 같이 이루어지므로 4회(자료수 -1) 만큼의 정렬이 이루어진다. 그렇다면 각 회차에서 큰 수가 뒤로 밀려나는 방법은 다음과 같다. (1회차의 경우) index 0과 index 1을 비교하여 큰 수를 뒤로 이동 시킨다 index 1과 index 2를 비교하여 큰 수를 뒤로 이동 시킨다 index 2와 index 3을 비교하여 큰 수를 뒤로 이동 시킨다 index 3과 index 4를 비교하여 큰 수를 뒤로 이동 시킨다 ----------

Intent 를 이용해 다음 페이지로 이동할 수 없을 때 [내부링크]

위와 같이 Intent를 이용해 페이지 전환을 시도했으나, 에러도 뜨지 않으며 앱이 종료되었다. 문제 해결 app>manifests>AndroidManifest.xml 에서 아래처럼 이동하려는 페이지를 Activity를 추가해준다.(이동 전의 페이지 Activity는 이미 존재한다.) ("secondpage"가 이동하려는 페이지의 java파일이다.) Intent의 다른 사용법

2 files found with path 'META-INF/DEPENDENCIES' from inputs: [내부링크]

다음과 같은 에러 발생 * What went wrong: Execution failed for task ':app:mergeDebugJavaResource'. > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction > 2 files found with path 'META-INF/DEPENDENCIES' from inputs: - C:\Users\username\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.5.6\1afe5621985efe90a92d0fbc9be86271efbe796f\httpclient-4.5.6.jar - C:\Users\username\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcor

Duplicate class com.google.common.util.concurrent.ListenableFuture found in modules guava-24.1-jre [내부링크]

다음과 같은 에러 발생 * What went wrong: Execution failed for task ':app:checkDebugDuplicateClasses'. > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable > Duplicate class com.google.common.util.concurrent.ListenableFuture found in modules guava-24.1-jre (com.google.guava:guava:24.1-jre) and listenablefuture-1.0 (com.google.guava:listenablefuture:1.0) Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependen

안드로이드 스튜디오 Run 비활성 시 [내부링크]

아래와 같이 Run 아이콘이 비활성화 되었을 때 (gradle 파일을 수정했을 때) File > sync project with Gradlefiles 를 클릭하면 다시 활성화 된다.

라즈베리파이 원격 설정 [내부링크]

편의성을 위해 노트북에서 라즈베리파이를 이용할 수 있도록 원격 설정 1.xrdp를 이용한 원격접속 (실패) 1. 라즈베리파이에서 커맨드 창에 아래를 입력해 xrdp를 설치한다. sudo apt-get install xrdp [y/n]질문에 y를 입력해 설치를 완료한다. 2. 위의 아이콘을 선택해 기본설정(Preferences) -> Raspberry Pi Configuration->Interfaces 에 들어가 SSH를 활성화 한다. 3. 라즈베리파이 커맨드창에 ifconfig 를 입력하여 IP 주소를 알아낸다 (인터넷 연결이 되어있어야 한다, 아래의 주황색 부분이 IP주소) 4.노트북에서 "원격 데스크톱 연결"을 실행한다. IP 주소를 입력하고 연결한다. 라즈베리파이의 비밀번호와 사용자명을 입력한다. 사용자명의 경우 커맨트창에서 ~@...: ~ $ 형식에서 ~에 해당하는 부분이다. 5. 실패 했다. 검색해본 결과 realvnc 때문에 충돌이 일어나서 그렇다고 한다.(자세히는 모르겠

안드로이드 스튜디오에 스마트폰 연결 [내부링크]

Android studio에서 개발한 앱을 모바일에서 열기 개요 1. 모바일을 개발자 모드로 변경 2. 모바일 장치 드라이버 설치 3. Android studio와 연결, 해제 1. 모바일을 개발자 모드로 변경 설정 > 검색 창에 "소프트웨어 정보" 를 입력 하여 들어감 > "빌드 번호" 를 연속해서 탭( 하다 보면 필요한 만큼 더 탭 하라고 한다. ) > 다시 설정의 기본 화면으로 나와서 나타난 "{}개발자 옵션"에 들어간다. > (경고 > 확인) > USB디버깅 버튼을 활성화 2. 모바일 장치 드라이버 설치 자신이 사용할 모바일 제조사 사이트에서 드라이버를 다운 받는다. <LG의 경우> LG 다운로드 센터 검색 위의 화면에서 아래로 스크롤 하면 모바일을 선택할 수 있다. 다음 화면에서 기종을 선택하여 사용환경 (Mac, Window)에 맞게 드라이버를 다운 받는다. 3. Android studio와 연결, 해제 usb를 통해 컴퓨터와 모바일을 연결한다. 만일 드라이버가 설치되지