본문 바로가기
반응형

목록363

[C++ 풀이] Codility - Lessons 8 (Leader), Dominator 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제 설명 이 문제는 배열 A가 주어지고, A의 요소들은 -2,147,483,648 ~ 2,147,483,647 사이의 정수로 입력됩니다. 이 중 배열 길이의 절반 초과로 나오는 정수가 있을 경우 해당 정수의 Index 값을 반환하면 되고, 없을 경우엔 -1을 반환하면 됩니다. 예를 들어 위 예제처럼 A의 배열 요소가 주어진다면, 3의 갯수는 5개가 됩니다. 배열 A의 길이는 8이고요. 따라서 배열 절반 길이인 4보다 3의 갯수가 더 많음으로, return 값은 0, 2, 4, 6, 7(A배열의 Index값) 중 하나의 값만 return해주면 됩니다. 결과 #include // you c.. 2019. 10. 4.
[C++ 풀이] Codility - Lessons 7, (Stacks and Queues) Nesting 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제 설명 배열 S에 대해 '('와 ')'이 대칭을 이루면 1반환, 아니면 0반환. 배열 S가 아무것도 없어도 1반환. 배열의 길이는 0 ~ 1,000,000 배열 S의 요소는 무조건 '(' or ')' 결과 // you can use includes, for example: // #include #include // you can write to stdout for debugging purposes, e.g. // cout 2019. 9. 29.
[C++ 풀이] Codility - Lessons 7, (Stacks and Queues) Fish 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제 설명 배열 A[]와 B[]가 주어지고 A의 배열 요소는 물고기의 크기를 나타냅니다. A배열의 index는 물고기의 순서를 나타내고요. B배열은 해당 물고기가 위로 올라갈지 밑으로 내려갈지 구분해주는 요소입니다. B의 배열 값은 0과 1로만 주어지며 0은 물고기가 상류로, 1은 물고기가 하류로 가는 설정입니다. 글로만 읽으면 이해가 안가실태니 그림을 첨부하겠습니다. A[] = { 4, 3, 2, 1, 5}, B[] = { 0, 1, 0, 0, 0} 이라고 가정했을 때 이런식이 됩니다. 상류로 가는 물고기와 하류로 가는 물고기가 만나면 큰녀석이 잡아먹습니다. 단, 물고기의 이동속도는 동.. 2019. 9. 28.
C++] 위상정렬 구현 및 설명 위상정렬은 각 노드들의 간선 개수를 구한 후 간선개수가 가장 적은 요소부터 순회하는 알고리즘입니다. 여기서 간선 개수란 각 노드마다 연결된 개수를 의미합니다. 간선 개수가 적은 요소들을 순회하기 때문에 한번에 원하는 지점까지 못가게 되는 특징이 있습니다. 위상정렬을 이용한 예제들은 주로 '게임 스킬트리, 우선순위에 대한 시간 문제 등...' 다양하게 사용되고 있습니다. 아래 그림을 통해 코드를 구현해 보겠습니다. 여기서 만약 A에서 E로 간다고 가정한다면 A는 B나 C를 거치고 D를 거처서 E로 가거나 혹은 D에서 F를 거처 E로 가게 됩니다. 즉, 노드 간선을 기점으로 모든 노드를 순서대로 거처가는걸 알 수 있습니다. 이 간선을 거처가는것이 하나의 조건이 될 수 있습니다. 아래는 구현 코드 입니다. #.. 2019. 9. 26.
2019] 이스트소프트 온라인 코딩 테스트 후기... 짧게 쓸게요... 210분 time에 3문제 주어 집니다. 네이버 코딩 테스트보다 어려웠습니다. 특히, 모든 문제가 영어여서 문제를 이해하는데 시간을 많이 썼습니다. 1번은 문자열 문제. (진짜 문제에서 요구하는 것이 뭔말인지 몰라서 이해하는데 30분 정도 사용한 것 같습니다. ㅡㅡ) 2번은 tree문제. (이거는 그냥 읽고 바로 이해했어요) 3번은 못읽었어요...(시간이 없어서 문제를 못읽었어요) codility로 시험 봤는데 codility특성상 시간 복잡도는 무조건 보는지라 신경써서 코딩했습니다. 1번문제는 O(N)으로 깔끔하게 풀었는데 2번 tree문제는 재귀를 써서 풀었는데 생각처럼 출력이 잘 안되서 계속 오류만 찾다가 끝났습니다.(Test case도 3문제중 2문제만 맞췄네요) 결론, 나에게 .. 2019. 9. 24.
C++] 인접 리스트 구현 인접리스트는 그래프의 한 종류입니다. 인접리스트를 쓰는 가장 큰 이유는 바로 탐색 때문인데, 우리는 인접리스트를 통해 연결된 모든 노드들을 확인할 수 있습니다. 우선 아래의 그림의 그래프를 만들어 보겠습니다. #include #include #include #include using namespace std; enum { A, B, C, D ,E}; void AddGraph(vector * v, int x, int y) { v[x].push_back(y); v[y].push_back(x); } int main(void) { vector g[5]; AddGraph(g, A, B); //A B 연결 AddGraph(g, A, D); //A D 연결 AddGraph(g, B, C); //B C 연결 AddGr.. 2019. 9. 23.
[C++ 풀이] Codility - Lessons 7, (Stacks and Queues) Brackets 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제. 설명 '(', '{', '[' 문자가 있는 문자열 S에 대해 문자열이 서로 대칭이 되는지 않되는지를 구하는 문제입니다. "{[()()]}" 는 서로 대칭임으로 1을 반환. "([)()]" 는 서로 대칭이 아님으로 0을 반환. 즉, 0 or 1 을 반환하면 되는 문제입니다. 여기서 'S'문자열의 최대 길이는 200,000이고 문자열의 원소는 '(', ')', '{', '}', '[', ']' 만 들어 있습니다. 또한 빈 문자열이 들어오면 1을 반환해 주면 됩니다. 결과 #include using namespace std; int solution(string &S) { // write.. 2019. 9. 22.
2019] 네이버 코딩테스트 후기.... 짧게 쓸게요. 총 3문제 120분 시간으로 푸는거였습니다. 첫번째는 문자열 문제. 두번째는 숫자 문제(수열). 마지막은 그래프 문제. 1번 문제는 굉장히 쉬웠습니다. 다 푸는데 30분 걸렸고.시간 복잡도는 O(N)으로 풀었습니다. 2번 문제는 잘 풀었다고 생각했었는데...... 시간이 지난 후 다시보니 틀린 부분이 많았습니다.... 마지막 문제는 위상정렬을 이용한 그래프 문제였는데, 우선 위상정렬에 존재를 오늘 처음 알았습니다......알고리즘 공부 미숙.....ㅠㅠ푸는 방법을 몰라 스택을 이용해 풀려고 했고, 실마리를 잡고 코딩을 하려고 시간을 보니 5분 남아있길래 그냥 백지 냈습니다. 하여, 자료구조 공부를 이참에 다시 해볼 생각입니다. 2019. 9. 22.
Embedded] Exception Vector table ARM에서 exception or interrupt가 발생하면 모든 행동을 중단하고 해당 exception의 형태에 따라 exception vector table의 양식에 맞는 실행을 하게 된다. 종류는 다음과 같다. Data Abort 메모리의 데이터를 읽거나 쓰는데 실패하는 경우 FIQ IRQ Prefectch Abort 명령어를 해석하다가 실패하는 경우 발생 SWI 주로 시스템 콜을 구현할 때 많이 사용 Reset ARM코어가 리셋될 때 사용 Undefined Instruction 읽어온 명령어가 정의되지 않은 명령어일 때 사용 2019. 9. 8.
[C++ 풀이] Codility - Lessons 6, (Sorting) Triangle 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제. 설명 A[] 배열이 주어지고 A의 범위는 0 ~ 100,000. A배열의 각 원소의 값은 −2,147,483,648 ~ 2,147,483,647. A배열의 원소중 다음의 조건식을 만족하는 결과를 구하시오. A[P] + A[Q] > A[R], A[Q] + A[R] > A[P], A[R] + A[P] > A[Q]. 0 ≤ P < Q < R < N 위 예제인 A[0] = 10 A[1] = 2 A[2] = 5 A[3] = 1 A[4] = 8 A[5] = 20 이걸 보면 알 수 있습니다. 해당 조건을 만족하는 배열 원소는 A[0] = 10, A[2] = 5, A[4] = 8 입니다. 배열 .. 2019. 9. 2.
도전 임베디드 OS 만들기 - hello world 출력!!(Ubuntu 18.04 64bit ver) u-boot 에뮬레이터로 hello world를 출력해 보는 글이 되겠습니다. 우선 이지부트 소스를 다운받아야 합니다. $ wget http://forum.falinux.com/_zdownload/data/ezboot.x5.v18.tar.gz $ tar -zxf ezboot.x5.v18.tar.gz 다운로드 후 압축을 풀면 'v18.org' 디렉토리가 생성될 것입니다. 디렉토리에 들어간 후 ls를 해보면 아래와 같은 디렉토리가 있을 것입니다. 여기서 사용할 폴더는 include, main 디렉토리 입니다. 따라서 이 두개를 따로 빼줍니다. $ mkdir ~/navilnux $ cp main/ ~/navilnux -r $ cp include/ ~/navilnux -r 그 후 main 디렉토리에 있는 ser.. 2019. 8. 30.
리눅스(Ubuntu18.04 ver) .bashrc, .profile, .bash_profile, .vimrc 가 없을 경우!! 리눅스를 사용하다보면 예상치 못하게 파일이 날아갈 때가 있습니다. 또 이것 저것 설치하다가 지우고를 반복하다보면 사용중인 계정(/home)에 있는 디렉토리 혹은 파일들이 없어져 있을 때도 있죠. 사용자 계정을 새로 만들고 그 계정에 들어갔는데 정말 아무것도 없을 때도 있죠.... 분명히 없는 이유는 있지만 리눅스에 익숙하지 않은 사람들에겐 상당히 당황스럽고 짜증나는 일입니다. 제목에서 볼 수 있듯이 .bashrc, .profile, .bash_profile 같은 기본 shell 코드가 없어질 때도 있습니다. 특히 root계정은 괜찮은데 user 계정이 말썽이죠..... 그래서 user계정을 사용하고 있는데 .bashrc, .profile, .bash_profile 파일들이 없어졌을 때 해결방법을 알려드리.. 2019. 8. 29.
도전 임베디드 OS 만들기 - qemu, u-boot 설치(Ubuntu 18.04 64bit ver) PC status OS : Ubuntu 18.04 (64bit)ram : 8GBgcc : 7.4.0 ver QEMU 설치 window에서 가상머신인 virtualbox를 이용하는 것 처럼 embedded 개발도 에뮬레이터 라는걸 이용하면 됩니다. EZ보드를 사서 해도 되지만..... 돈도 나가고 또 비쌉니다. 국내에선 구하기 힘들구요. 하여, 책에서 소개하고 있는 qemu라는 녀석을 설치해 보겠습니다. qemu는 최신버전을 사용해도 무방함으로 위와 같은 형식으로 설치해 줍니다. u-boot 설치 ※ 2019년 8월 27일 현재 '도전 임베디드 os 만들기'의 arm-linux-gcc, u-boot, qemu등 소스 파일이 있는 홈페이지가 안들어 가집니다.때문에 제 github에 일단 올려놨습니다. '$ .. 2019. 8. 27.
Ubuntu 18.04 버전 인터넷 자꾸 끊길 때 자동 Reset해주는 프로그램. 안녕하세요? 저는 현재 Ubuntu 18.04 버전을 사용하고 있습니다. 그리고 공부할 때 원격접속(ssh)를 통해서 리눅스를 사용하고 있습니다. 근데 사용하다보면 간혹 인터넷 연결이 끊길 때가 있습니다. LAN선은 잘 물려있는데 말이죠... 즉, 하드웨어적으론 정상인데 소프트웨어 적으로 끊긴다는 뜻입니다. 해결 방법은 '$ reboot' 명령어로 리눅스를 재시작 하거나, '$ sudo service network-manager restart' 명령어를 입력해 줘서 리눅스의 network를 restart하는 방법이 있습니다. 근데 집에서 리눅스를 켜놓고 밖에 나와서 접속하려고 할 때 연결이 위와 같은 현상으로 끊기게 되면 아무것도 못하게 됩니다..... 집에 누군가가 있다면, 전화로 LAN선을 뺏다 꽂으.. 2019. 8. 25.
크로스 컴파일러란? 크로스 컴파일러 설치 방법!! (도전 임베디드 OS 만들기) 크로스 컴파일러란? 다른 플렛폼에서(windows, Mac) 다른 플렛폼의(Android, IOS, Embedded) 실행 파일을 만들어 주는 컴파일러를 가르켜크로스 컴파일러 라고 합니다. 이 무슨 말이냐?? 예를 들어 Android의 .apk파일(어플리캐이션)을 만들고자 할 때 흔히 사용하는 소프트웨어가 있습니다.바로 Android studio 입니다. 이 소프트웨어를 실행시킨 후 컴파일하면 실행파일이 만들어 집니다. 이 실행 파일은 windows에서 실행이 불가능 하죠. windows는 .exe파일만 실행 가능하기 때문입니다.하지만 windows에서 스마트폰을 가상으로 띄우거나 직접 스마트폰에 apk파일을 넣은 후 직접 스마트폰으로 실행하면어플리케이션은 실행이 잘 됩니다. 즉, 다른 플렛폼인 wind.. 2019. 8. 22.
728x90
반응형

스킨편집 -> html 편집에서