본문 바로가기
728x90

전체 글739

[Programming] 좋은 소프트웨어란?, 소프트웨어 개발의 기본 개념 좋은 소프트웨어란? 포스트 난이도: HOO_Junior [Notice] 포스트 난이도에 대한 설명 안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다 whoishoo.tistory.com # 좋은 소프트웨어 좋다는 의미가 추상적일 수는 있지만 소프트웨어에 있어서 좋고 나쁘고 가 확실히 존재한다. 같은 소프트웨어라도 어떤 식으로 개발이 되어 작동하는지에 따라 나쁜 소프트웨어가 될 수도 있고 좋은 소프트웨어가 될 수도 있다. 필자가 현직 개발자들과 이야기를 나눌 때도 좋은 소프트웨어 개발을 강조하거나 이제 막 프로그래밍 공부를 하는 학생들에게 좋은 소프트웨어 개발.. 2021. 9. 26.
[Programming] Big O Notation(빅오 표기법): O(n^2) Example Codes Big O Notation(빅오 표기법): O(n^2) Example Codes # 포스트 난이도: HOO_Middle https://whoishoo.tistory.com/notice/161 [Notice] 포스트 난이도에 대한 설명 안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다 whoishoo.tistory.com Big O Notation 중에서 n^2에 대한 예제 코드를 살펴보도록 하겠다. n^2 코드는 기본적으로 nest for문 형태로 구성되어 있으며, n*n이 적용되어 n^2이 된다. 만약에 반복되는 기준값(또는 범위 값)이 다른 경우에는 n*.. 2021. 9. 12.
[Programming] Software Development Methodologies: Waterfall Model(폭포수 모델) Waterfall Model(폭포수 모델) 포스트 난이도: HOO_Junior [Notice] 포스트 난이도에 대한 설명 안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다 whoishoo.tistory.com # Waterfall Model이란? Waterfall Model은 소프트웨어 개발에 있어서 대표적인 개발 프로세스 방법 중 하나에 해당한다. 한국에서는 직번역하여 폭포수 모델이라고도 불리는데 어렵게 생각할 필요 없이 단어 자체의 의미를 이해하면 된다. Waterfall은 폭포를 의미하는데 폭포는 일반적으로 위에서 아래로 떨어지게 된다. 폭포에서 물이 .. 2021. 9. 12.
[Programming] Asymptotic Bounding #01: Upper bound, Lower bound, Tight bound Asymptotic Bounding #01: Upper bound, Lower bound, Tight bound 포스트 난이도: HOO_Middle [Notice] 포스트 난이도에 대한 설명 안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다 whoishoo.tistory.com # Big-O Notation => Asymptoic Bounding Data Structure를 통해 Big-O notation에 대해서 이해했다면 다음 단계로 Asymptotic Bounding에 대해서 살펴봐야 한다. Asymptotic bounding은 한국에서 점근 표기법이라.. 2021. 9. 12.
[Programming] 소프트웨어 개발 방법론(Software Development Methodologies) 소프트웨어 개발 방법론(Software development Methodologies) 포스트 난이도: HOO_Middle [Notice] 포스트 난이도에 대한 설명 안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다 whoishoo.tistory.com # 소프트웨어 개발 방법론이란? 이번 포스트를 읽고 있는 Bro들은 기본적으로 프로그램 개발을 해본 적이 있거나 이미 실무에서 신입 개발자로 일을 하고 있는 Bro가 대부분일 것이다. 분야별로 프로그램을 개발하는 방식이나 사용하는 툴은 다르지만 소프트웨어 자체를 개발한다는 건 공통점을 가지고 있다. 일적으로 .. 2021. 9. 12.
[Java] 웹사이트 만들기 #00 - Prologue 웹사이트 만들기 #00 - Prologue 포스트 난이도: HOO_Senior [Notice] 포스트 난이도에 대한 설명 안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다 whoishoo.tistory.com # 웹사이트 만들기 시리즈 포스팅 CS 전공 Bro들 중에 웹 프로그래머 쪽으로 취업을 원하거나 웹 사이트를 활용한 포트폴리오 준비를 하고 싶어 하는 Bro들이 많다. 웹 사이트를 인터넷에 찾아보고 만드는 것은 사실 어렵지는 않다. 필자에게 웹사이트 관련하여 물어보는 Bro들도 이미 개인 웹사이트를 만들어보거나 과제에서 직접 웹사이트를 만들어 본 경험이.. 2021. 9. 4.
[HOO's Q&A] Bio-O 표기법 알아야 하나요? Bio-O 표기법 알아야 하나요? 포스트 난이도: HOO_Junior [Notice] 포스트 난이도에 대한 설명 안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다 whoishoo.tistory.com Q: 빅오 표기법 솔직히 몰라도 되는 거 아닌가요? Q: 빅오 표기법 파이썬에서는 필요 없잖아요. Q: 빅오 표기법 어렵지만 알아두면 좋은 거 아닌가요? Q: 빅오는 몰라도 개발자 될 수 있죠? # 프로그래머라면 알고리즘을 알아야 한다. 며칠 전에도 미국에서 공부를 하는 Bro가 필자에게 "빅오 표기법 솔직히 필요 없잖아요.", "파이썬에서는 필요 없는 거 아닌.. 2021. 9. 4.
[HOO's Q&A] 전역 변수를 많이 사용해야 하지 않는 이유 전역 변수를 많이 사용해야 하지 않는 이유 Q: 전역 변수와 지역 변수 사용시에 결과값이 동일하다면 왜 지역변수를 위주로 작성해야 되나요? Q: 저는 전역 변수로 놓는 것이 깔끔해 보여서 다 전역 변수로 빼놨더니 교수님이 F 주셨어요. 한국에서 전역 변수라고 불리는 Global variables는 전체 코드에 영향을 줄 수 있는 변수에 해당한다. 각각의 클래스 내부에 위치해 있는 local variables들과 달리 외부에 위치하고 있어 모든 클래스에 사용이 가능한 상태인 변수를 Global variables, 전역 변수라고 부른다. 필자에게 질문을 한 Bro는 "전역 변수를 왜 많이 사용해서는 안되는지?"이었다. 거두절미하고 전역 변수는 왠만하면 사용을 자제하는 것이 좋다. # 프로그래머가 지켜야 하는.. 2021. 8. 29.
[Java] 자바 쓰레드와 멀티 쓰레드(Java Thread and Multithreading) 자바 스레드(Thread)와 멀티 스레드(Java Multithreading) 자바 프로그래밍에서 가장 중요한 기능 중에 하나가 바로 Multithreading이다. 그만큼 코딩 과정에서 많이 사용하는 기능이자 멀티스레드를 어떻게 사용하느냐에 따라서 프로그램의 효율성도 달라진다. # 멀티 쓰레드와 멀티 프로세스 우선 멀티 쓰레드와스레드와 멀티 프로세스에 대해서 간략하게 확인하고 가자. 멀티 스레드와 멀티 프로세스에 대해서 혼란스러워하는 경우가 있는데 둘은 다른 기능을 의미한다. 멀티 스레드는 하나의 프로세스에서 여러 개의 작업을 하도록 해주는 기능이며, 멀티 프로세스는 여러 개의 프로세스를 사용하여 병렬적 일 처리를 할 수 있게끔 해주는 기능을 의미한다. 아래의 그림을 참고하면 이해하기 훨씬 쉬울 것이다.. 2021. 8. 24.
[HOO's Information] 프로그래밍 공부하는 방법 #02 - 읽는 습관의 중요성 프로그래밍 공부하는 방법 #01 - 읽는 습관의 중요성 아직까지도 프로그램 개발을 하거나 프로젝트 마무리가 시기가 다가왔을 때 생각한 만큼 진척이 이루어지지 않았거나 잘 풀리지 않다 보면 잊어버리곤 하는 습관이다. 필자가 아무리 책을 읽는 걸 즐겨왔다곤 하지만 "빨리빨리"를 외치는 조급한 성격 탓에 자주 실수하는 행동 중 하나가 꼼꼼히 읽는 것이다. 프로그래밍은 수많은 자료와 설명글, 코드들을 모조리 읽어야 하는 작업이다. 코딩을 하는 시간만큼이나 자료를 읽고 이해하고 분석하는 시간 또한 꽤 걸린다. 그만큼 읽을거리가 많고 프로그래머는 그 많은 읽을거리들을 찬찬히 읽고 이해해 나가야 한다. 하지만 현실적으로 프로그래밍을 공부하다보면 마음처럼 되지가 않는다. 특히 시간에 쫓기다 보면 빨리 작업이 어떻게 서.. 2021. 8. 21.
[Programming] 신입 개발자가 조심해야 하는 것 #01 - 불법 프로그램, 용도 이외의 프로그램 사용 신입 개발자가 조심해야 하는 것 #01 - 불법 프로그램, 용도 이외의 프로그램 사용 프로그래머가 유의해야 하는 것이 프로그램이다. 프로그램을 만드는 사람이지만 정작 프로그램 자체를 조심해야 한다. 사실 신입 개발자뿐만 아니라 모든 개발자는 프로그램 사용에 있어서 조심해야 한다. 하지만 일반적으로 프로그램 사용 문제는 신입 개발자에게서 자주 발생되는 문제이다. # 불법 프로그램 사용 필자가 이번 포스트에서 당부하고 싶은 말은 불법 프로그램의 사용이다. 불법 프로그램이라고 하면 프로그램 자체가 불법적인 거 아닌가라는 생각이 들 수도 있지만 그게 아니라 개발자의 사용 목적에 따라 프로그램 사용이 불법이 되는 걸 의미한다. 한마디로 개인용 또는 비상업적 용도로 사용할 때는 문제가 되지 않던 프로그램이 상업적 .. 2021. 8. 20.
[App Examples] 로또 번호 추천 앱 만들기 #01 - Random Function 활용하기(Kotlin) 로또 번호 추천 앱 만들기 #01 - Random Function 활용하기(Kotlin) 포스트 난이도: HOO_Middle https://whoishoo.tistory.com/notice/161 [Notice] 포스트 난이도에 대한 설명 안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다 whoishoo.tistory.com #Read Me 코틀린 기반으로 로또 번호를 추첨해주는 애플리케이션을 시리즈 포스트를 통해 살펴보려고 한다. 첫 번째 포스트로 랜덤 함수를 활용하여 기본적인 랜덤 숫자를 나타내 주는 앱을 만들어보았다. 버튼 클릭으로 7개의 숫자가 랜덤으.. 2021. 8. 16.
[App Development] 안드로이드 스튜디오 무료 트레이닝: 코틀린, 자바 무료로 배우는 방법 안드로이드 스튜디오 무료 트레이닝: 코틀린, 자바 무료로 배우는 방법 포스트 난이도: HOO_Junior [Notice] 포스트 난이도에 대한 설명 안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다 whoishoo.tistory.com 취미나 사이드 프로젝트로 애플리케이션 개발에 관심이 많은 프로그래머들이 많다. 프로그래머에게 사이드 프로젝트는 지치거나 현타가 올 수 있는 프로그래밍 업무에서 벗어나 프로그래밍에 대한 흥미를 되찾을 수 있는 좋은 취미활동이라고 생각한다. 또는 졸업 프로젝트나 프로그래밍을 스펙을 쌓고 싶은 국내 학부생들도 최근에는 애플리케이션을.. 2021. 8. 14.
[HOO's Information] 프로그래밍 공부하는 방법 #02 - 프로그래머와 영어 프로그래밍 공부하는 방법 #02 프로그래머에게 영어는 필수불가결이다. #. 프로그래밍과 영어 현직에서 프로그래머로 일을 하고 있는 한국 Bro들과 가끔씩 안부차 이야기를 나누곤 한다. 사실상 잔소리하려고 연락한 셈이다. 코로나가 심해지기 전에 직접 만나서 이야기를 나누거나 전화를 이야기를 나누다 보면 생각지도 못한 고민거리나 질문거리가 생긴다. 그중에 하나가 바로 영어이다. 비전공자이든 전공자이든 경력자든 신입이든 상관없이 프로그래밍을 하기 위해서는 영어를 할 줄 알아야 한다. 물론 필자의 경우 해외에서 공부를 해왔기에 프로그래머는 영어를 해야 한다는 걸 모르고 있었다. 왜냐하면 주변 친구들이나 프로그래머들은 영어가 모국어이기 때문이다. 하지만 영어가 모국어가 아니거나 잘하지 못한다면 영어를 꼭 알아야 .. 2021. 8. 12.
[HOO's Q&A] 프로그래밍 언어 공부할 책으로 어떤 책이 좋나요?, 스프링 공부할 책으로 어떤 책이 좋나요? Q: 프로그래밍 언어 공부할 책으로 어떤 책이 좋나요? Q: 스프링 공부할 책으로 어떤 책이 좋나요? 프로그래밍 공부를 시작하거나 새롭게 다른 분야의 프로그래밍을 공부하는 한국 Bro들이 많이 질문하는 부분이 바로 책이다. 프로그래밍을 공부하기 좋은 책에 대해서 추천해달라는 얘기를 많이 하곤 한다. 문제는 필자도 어떤 책이 좋은지는 잘 모른다는 것이다. 각 분야마다 개발자들 사이에서 인기 있는 책이 있을 수도 있고 필자와 같이 미국에 있는 개발자보다 한국에 있는 개발자가 공부하기 좋은 책에 대해서 더 잘 알 수도 있다. 또한 어느덧 꼰대 개발자가 되어가는 필자에게는 새로 나온 좋은 책을 전부 알 길이 만무하다. 물론 필자도 시간이 될 때마다 찾아보고 새로 나온 책들을 읽어보곤 하지만 아무리 그래도 책 전.. 2021. 8. 10.
[HOO's Information] 프로그래밍 공부하는 방법 #01 - 프로그래밍은 요리와 같다. 프로그래밍은 요리와 같다. 프로그래밍에 대해서 잘 알지 못하는 상태에서 프로그래밍을 공부하려고 하면 막막하다. 프로그래밍 공부는 책을 열심히 본다고 해서 잘할 수 없다. 예제 코드를 보고 따라 한다고 해서도 프로그래밍 실력이 크게 향상되기는 힘들다. 프로그래밍은 우리가 일반적으로 해오던 공부 방법을 적용하면 안 된다. 물론 기존에 수능 공부하듯이 또는 자격증 공부하듯이 해오던 방식을 프로그래밍 공부에 적용하면 도움이 전혀 안 되는 것은 아니다. 다만 1년 만에 향상할 수 있는 프로그래밍 능력을 5년이 걸릴 수도 있다. 필자도 처음부터 프로그램 개발 전공이 아닌 의학 분야 전공에서 전과를 해서 오게 되었다. 그렇다보니 다른 미국 학생들의 경우 중학교, 고등학교 심지어 초등학교 때부터 배워 온 코딩을 필자는.. 2021. 8. 10.
[Programming] Shift Reduce Parser Example Shift Reduce Parser Example Shift Reduce Parser에 대한 예제 문제이다. 아래의 예제 문제를 살펴보며 Shift Reduce Parser에 대해서 이해할 수 있다. #01 Example # Parser Table State Action Goto id + * ( ) $ E T F 0 S5 S4 1 2 3 1 S6 ACCEPT 2 R2 S7 R2 R2 3 R4 R4 R4 R4 4 S5 S4 8 2 3 5 R6 R6 R6 R6 6 S5 S4 9 3 7 S5 S4 10 8 S6 S11 9 R1 S7 R1 R1 10 R3 R3 R3 R3 11 R5 R5 R5 R5 # Grammar E -> E + T E -> T T -> T * F T -> F F -> (E) F -> id #.. 2021. 8. 6.
[Programming] Amdahl's Law (암달의 법칙) Amdahl's Law Amdahl's Law란? Amdahl's Law은 한국말로 암달의 법칙이라고 불리는 Computer Sicence 분야 공식이다. Amdahl's Law는 Gene Amdahl이라는 사람이 1967년에 소개한 법칙이며, 개선된 컴퓨터 시스템의 성능을 판단하는데 도움을 주는 계산 방식이다. 병렬적 컴퓨팅 시스템의 스피드가 얼마나 빠른지를 보여주는 계산해주는 공식이다. Amdahl's Law는 Parallelized를 할 수 없는 부분과 Parallelized가 가능한 부분을 구분해주기도 한다. Ovserved Speedup Parallel program's performance를 확인하는 공식은 다음과 같다. Serial Execution Serial execution 공식은 아래.. 2021. 8. 6.
[Programming] Scheme Language(스킴): Example Codes Scheme Language(스킴): Example Codes Scheme language, 한국말로는 스킴이라고 부르는 프로그래밍 언어이다. 다중 패러다임 프로그래밍 언어로 LISP(리스프) 계열 언어에 해당된다. Scheme language를 활용한 예제 코드를 아래에서 살펴볼 수 있다. 3가지 예제 코드를 통하여 스킴 언어로 구성된 코드가 어떤 식으로 작동되는지 알 수 있다. 참고로 스킴 언어를 코딩을 통해 살펴보고 싶다면 별도의 스킴 언어 IDE를 설치하는 것도 좋지만 온라인 IDE 툴을 사용해서 쉽게 확인하고 공부가 가능하다. #01 test = 10 (define (test? num) (cond ((zero? (mod num 10)) 3) ((zero? (mod num 15)) 7) ((eve.. 2021. 8. 5.
[Programming] Prolog: Family Tree Example Prolog: Family Tree Example 프롤로그(Prolog)를 공부하는 있어서 대표적으로 많이 나오는 문제가 Famil Tree에 대한 예제이다. 한국말로 하면 가족 관계도에 해당하며 프롤로그를 통해서 Family Tree를 만들고 이에 대한 원하는 결괏값을 바로바로 확인이 가능하다. 아래의 링크를 들어가면 SWISH에서 Family tree example code를 제공해주고 있으니 참고하고 직접 실행해보는 것도 좋다. SWISH -- SWI-Prolog for SHaring % KNOWLEDGE BASE % FACTS: % MALES male(abraham). male(clancy). male(mr_burns). male(homero). male(seymur_skinner). male(b.. 2021. 8. 5.
[HOO's Information] 프로그래밍 공부하는 방법 #00 - Prologue 프로그래밍 공부하는 방법 #00 - Prologue Programming을 공부하는 건 쉽지 않다. 책을 보고 교수님이 주신 과제를 따라서 한다고 해도 과연 내가 프로그래머인가 고민이 되고 걱정이 된다. 프로그래밍에 대한 공부를 해왔지만 과연 내가 프로그램 개발을 실제로 할 수 있는지 의문이 드는 게 프로그래밍 공부이다. 심지어 실무에서 프로그램 개발자도 본인 실력이 정체되어 있지 않은지에 대한 불안감과 걱정을 한다. 프로그래머라는 직업은 계속 공부를 해야 하는 직업이다. 프로그래밍 분야에 따라서 차이가 있을 수 있지만 필자가 공부하고 개발하고 있는 Artificial Intelligence, Data science 분야는 지속적인 공부가 필요하다. 프로그래밍은 매 순간 새로운 툴이나 알고리즘이 나오다 .. 2021. 8. 4.
[Python] 파이썬에서 멀티프로세싱이란?(What is Multiprocessing in Python?) 파이썬에서 멀티프로세싱이란? (What is Multiprocessing in Python?) 멀티프로세싱(Multiprocessing)은 수많은 데이터 처리를 효율적으로 할 수 있는 기본적인 기능이다. Data Science 분야와 같이 빅데이터를 분석하고 활용하기 위해서는 다중처리가 가능한 HW뿐만 아니라 SW에서 알고리즘 방식을 어떻게 가져가느냐가 중요하다. 파이썬에서는 멀티 프로세싱이라는 기능을 제공함으로써 효율적인 데이터 처리를 할 수 있도록 도와주고 있다. 이번 포스트에서는 멀티 프로세싱에 대한 기본적인 개념에 대해서 살펴볼 예정이다. 멀티 프로세싱이란? 멀티프로세싱은 한국에서 다중처리, 병렬 처리 등으로 불리며, 여러 프로세서를 기반으로 병렬적으로 업무 처리를 하는 방식을 의미한다. HW 기.. 2021. 8. 4.
[APP Development] 코틀린 기반 안드로이드 애플리케이션 개발할때 알아두면 좋은 사이트 코틀린 기반 안드로이드 애플리케이션 개발할 때 알아두면 좋은 사이트 애플리케이션을 통한 일 처리에 제약이 많았던 과거와 달리 최근에는 거의 모든 일을 웹을 대신하여 앱에서 처리가 가능하다. 또한 기존 방식의 네이티브 앱뿐만 아니라 웹 앱으로도 충분히 네이티브 앱의 기능을 실행하고 구현할 수 있게 되다 보니 스마트 폰의 앱을 통해 모든 일을 간편하게 처리할 수 있게 되었다. 앱이 다양하게 출시되고 사용자가 불편함 없이 사용할 수 있는 제일 큰 이유는 개발자가 아이디어만 있다면 과거에 비해 상대적으로 손쉽게 개발이 가능하기 때문이다. 또한 스타트업을 준비하는 사람이라면 인프라 시설이나 많은 시드 머니가 필요로 하지 않는 앱 개발을 통해 비즈니스를 시작할 수 있다. 물론 프로그래밍 기술과 많은 노력이 있어야 .. 2021. 7. 31.
[Programming] Queue: 원형 큐(Circular Queue) 단계별 과정 Queue: 원형 큐(Circular Queue) 추가 설명 #01 Q: 공식만 봐서는 이해가 되지 않아서 원형 큐 추가 설명해주세요. 앞선 큐(Queue) 관련 포스트에서 Linear Queue와 Circular Queue에 대해서 살펴보았다. [Programming] Queue(큐): 선형 큐(Linear Queue), 원형 큐(Circular Queue) Queue(큐) Queue란? Queue(큐)는 Data Sturcutre(자료구조)의 한 종류로써 간단한 방식을 사용하지만 많이 사용되는 Data Sturcutre이다. 선입선출이라고 불리는 FIFO(First Input First Output) 방식을 사용하고.. whoishoo.tistory.com Bro 중에서 원형 큐에 대해서 구현 과정을.. 2021. 7. 28.
[Programming] Quick Sort, Sort Algorithms #01 Quick Sort, Sort Algorithms 한국에서는 퀵 소트, 퀵 정렬 또는 빠른 정렬이라고 불리는 대표적인 자료구조(Data Structure) 알고리즘이다. Quick sort에 대한 설명은 포스트 하나에서 자세하게 다루기 어려운 관계로 포스트를 여러 개로 나누어서 소개를 하려고 한다. 이번 포스트에서는 간단하게 Quick sort에 대해서 알아보도록 하겠다. Quick sort란? 한국에서는 퀵 소트 또는 퀵 정렬이라고 불리는 대표적인 자료구조(Data Structure) 알고리즘이다. Quick sort에 대한 설명은 포스트 하나에서 자세하게 다루기 어려운 관계로 포스트를 여러 개로 나누어서 소개를 하려고 한다. 이번 포스트에서는 Quick sort에 대한 근본적인 원리를 살펴봄으로써 Q.. 2021. 7. 28.
[App Examples] 앱 배경 화면 이미지 넣는 방법 예제 코드: android:background="@drawable/" 앱 배경 화면 이미지 넣는 방법 예제 코드: android:background="@drawable/" import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } 2021. 7. 19.
[HOO's Q&A] 1년차 개발자인데 이력서 경력 정리가 필요할까요? Q: 1년 차 개발자인데 이력서 경력 정리가 필요할까요? 당장 이직할 마음은 없지만 미리부터 이력서를 관리하는 건 좋은 생각이다. 이직을 하지 않더라도 1년 동안 자신이 어떤 업무를 담당해서 경험을 쌓고 있는지 스스로 돌아볼 수 있는 계기가 되기 때문이다. 이러한 이력서 경력 정리는 특히 신입 개발자에게 좋은 습관이자 자신의 능력 향상에 큰 도움을 준다고 생각한다. 이력서 경력 정리는 프로그래밍 분야 결정에 도움을 준다. 신입 개발자 중에서 자신이 특정 프로그래밍 분야의 전문가로 활동하지 않는다면 대부분 실무에서 프로그래머로 경험을 쌓으며 공부를 병행하는 과정을 거친다. 이러한 경우 경력을 쌓고 자신의 분야를 찾아 이직을 하고 싶더라도 막상 어떤 프로그래밍 분야로 갈지 막막해진다. 필자는 대학교를 가기 .. 2021. 7. 18.
[HOO's Q&A] FSM과 FSA의 차이가 무엇인가요? Q: FSM과 FSA의 차이가 무엇인가요? FSM이라고 불리는 Finite State Machine과 FSA라고 불리는 Finite State Automata에 대해서 헷갈리는 경우가 종종 있다. 비슷하면서도 FSM와 FSA는 방식에서 다소 차이가 있다. FSM과 FSA를 동일하다고 이야기하는 이유는 FSM 안에 FSA가 존재하기 때문이다. FSM이라고 불리는 방식은 한 가지 방식을 의미하는 게 아니다. 따라서 FSM 방식 안에 FSA라는 방식이 존재하다 보니 FSM == FSA라고 오해하는 경우가 종종 생기는데 그렇지는 않다. 우선 FSM은 전기 회로에 대한 설계를 위한 설계 방식에 해당하며 binary에 대한 이동 방식을 표현하는 사용된다. 그렇다 보니 상황에 따라 입력값이나 결괏값이 한 가지 이상이.. 2021. 7. 17.
[Programming] Finite State Automata: FSA Examples Finite State Automata: FSA Examples #01 ∑={a,b} L={aab+a} ∑={a,b} L={aab+a} L(aaba) -> Yes L(aabbba) -> Yes L(aabbbba) -> Yes L(aabbb) -> No L(aabbbaa) -> No L(baaaa) -> No L(baa) -> No #02 ∑={a,b} L={a^xb^y | x,y > 0} ∑={a,b} L={a^xb^y | x,y > 0} L(aabb) -> Yes L(ab) -> Yes L(aabbb) -> Yes L(aaaaaabb) -> Yes L(bbbbb) -> No L(aaaaa) -> No L(abab) -> No L(baa) -> No #03 ∑={a,b} L={a(ba)*} ∑={a,b}.. 2021. 7. 15.
[Python] 파이참에서 파이썬 패키지 쉽게 설치 하는 방법: import [패키지명] 파이참(Pycharm)에서 파이썬(Python) 패키지(Packages) 쉽게 설치 하는 방법: import [패키지명] 필자의 경우 자주 사용하는 컴퓨터에 기본적으로 패키지 세팅이 되어 있다 보니 추가적으로 새로운 패키지를 설치하는 일이 드물다. 솔직히 프로그래밍을 하는 것보다 세팅하는 과정 자체가 귀찮고 특히 처음 프로그래밍을 접하는 Bro들의 경우에는 하루 웬 종일 세팅만 하다가 하루가 다 가기도 한다. 따라서 파이참에서 손쉽게 패키지를 설치하는 방법을 살펴보려고 한다. pip를 통한 패키지 설치 파이썬에서 추가적인 패키지를 설치한다고 한다면 일반적으로 cmd에서 pip를 통한 패키지 설치가 이루어지곤 한다. pip install numpy 예를 들면 위의 numpy 패키지 설치한다고 할 때 위의 .. 2021. 7. 12.
728x90