분류 전체보기 188

자바는 어떻게 메모리를 사용할까요? (자바의 메모리 사용)

일반적으로 우리가 작성한 코드는 JVM에 의해 실행된다. 그럼 JVM 속에서 이 코드들은 어떻게 저장되고 어떻게 동작하는가? CS 지식에서 단골 메뉴이다. 자바를 사용한다면 기본적으로 자바가 어떻게 동작하는지를 알고있어야 한다. 또한 안정적으로 프로그램을 개발하려고 한다면 이 구조를 역시 빼놓을수가 없다. 프로그램이 메모리를 사용하는 방식은 아래와 같다. 객체 지향 프로그래밍에서는 이 데이터 저장 영역을 다시 3개의 영역으로 나눠서 사용하게 되는데, 이 영역이 우리가 잘아는 Static, Stack, Heap 영역이다. 코드를 통해 우리가 작성한 코드가 어떻게 데이터 저장 영역에 저장되는지 확인해보자. public class Start{ public static void main(String[] args..

Day.14 타임어택 및 웹 애플리케이션

알고리즘 타임어택이 있던 당일 금일 9시부터 11시까지 Python 또는 Java를 이용해서 문제를 해결 솔직히 알고리즘에 자신이 없었지만 한번 풀어보자는 생각을 했다. 문제를 확인해보니 엥?.... 쉬운데?... 난이도는 쉬워서 수월하게 문제를 풀 수 있었지만, 프로그래머스를 처음으로 이용해봐서 계속 런타임이 났다.. 그 이유는 코드 전체를 쓰는 것이 아니라, 로직부분만 구현했으면 됐다는... :( 로컬에서는문제가 없는데 계속 런타임 오류가 나서 시간을 많이 소모했다. 문제의 난이도는 프로그래머스 0단계 수준 조금만 생각하면 충분히 누구나 풀 수 있는 문제들이었다. 나는 기존에 자주 사용하던 Java를 이용해 문제를 해결했고, 4문제의 문제가 출제되었는데 4문제를 다 해결했다. 문제는 다음과 같다. (..

Day.13 알고리즘 학습 (회문 문자열)속 toUpperCase

내일배움캠프에서 제공하는 알고리즘 강의의 목차를 기준으로 같은 내용의 알고리즘의 문제를 푸는 방식이나 강의에서 주는 문제를 Python이 아닌 Java를 이용하는 방식을 사용해서 문제를 접근하고, 해결하려고 노력하고 있다. 항상 문제를 접근할 때, 문제를 해결하기 위해 어떤 논리적인 생각을 해야하며, 이 속에는 알고리즘과 관련된 혹은 기본 베이스가 어떤 것이 있을까? 생각하며 문제에 접근하고자 한다. 항상 알고리즘 문제를 풀 땐, 옆에 종이와 펜을 필수로 둔다. 주어진 문제를 분석하다 보면 필요한 내용들을 종이에 적고, 논리적인 부분들을 직접 해보면서 문제에 접근하다보디 시간이 많이 걸리긴하는데, 문제를 이해하고 해결하면 만족한다... 금일 해결한 문제는 다음과 같다 1. LinkedList의 끝에서 K..

Day.12 재귀함수 그리고 졸업 프로젝트

오늘은 학부 마지막 종착역이자 엔드포인트인 졸업작품 프로젝트 발표회가 있었다. 그래서 공부에 많이 집중할 수 없었는데, 뭔가 아쉬우면서도 최종 피드백을 듣고 엔드포인트를 돌려고하니 4년의 시간이 주마등처럼 지나가면서 묵었던 체중이 내려가는 것 같았다.. 직접 서비스를 기획하고 만들고, 피칭 준비까지 팀장의 무게는 나름 잘 견뎠다고 생각했다... 본론으로 넘어가서 금일은 많은 공부를 못했다...... 오늘 공부한 내용은 재귀함수에 대해 공부했다. 알고리즘의 단골 문제.... 알고리즘 강의 2주차 8에 있는 재귀함수를 간단하게 공부하고 백준 문제로 이 것을 적용해서 풀어보았다. 우선 재귀함수가 무엇이나? 재귀는 자기를 호출하는 프로세스를 가지는 함수인데, 이 알고리즘을 이용해 다양한 문제를 해결 할 수 있는..

내배캠 2주차 - WIL

이번주도 무사히 잘 지나갔다.... 금주부터 알고리즘과 css 공부를 하기 시작했다. 이번주에 가장 큰 배움이라고 하면... 음....크게 떠오르는게 없는데 아마 기존에 있는 알고리즘 공부를 다시 시작했고, 이 속에서 배우는 것이 가장 많지 않나 싶다.. 강의에서 제공하는 내용은 python으로 알고리즘을 알려주는데, 내 생각엔 러닝커브가 너무 심하지 않을까? 라는 생각이 커서 Java로 그냥 하려고 한다. 자바로 알고리즘 공부하고 강의에 목록에 맞춰 알고리즘을 따로 공부해야겠다.. 이번주에서 가장 큰 깨달음은 우선 파이썬에서 지원해주지 않는 것들에 대해서에 대한 배움이 가장 크지 않나 싶다..

WIL(Week I Learned) 2022.11.14

Day.10 Binary Search(이진 탐색) - 백준 1920번(수 찾기)

오늘 들어야 할 알고리즘 강의 chapter가 이진탐색 (binary Search)였다. 이미 개념에 대해선 잘 알고있어서, 개념을 이해하는데 큰 어려움은 없었지만, 이 것을 구현하려고 하니 정말 시간이 많이 소모됐다. 기존에 진행하는 Python 알고리즘 강의의 방식대로 python으로 구현하는 것이 아니라 같은 내용을 java로 구현하려고 한다. (백준을 이용) (구현 방식에 대해 생각하고, 직접 그 방식을 구현하려고 많은 시간을 썼지만, 이렇게 연습하다보면 구현 능률이 올라 갈 것이라 믿어 의심치 않는다...) 직접 구현을 하면서 강의를 따라가려고 하니 생각보다 강의 속도가 안나서 고민이다 어떻게 해야할지.. (팀원분이랑 이 부분에 대해서 이야기를 했는데, 그냥 잘 모르겠으면 해설보고 이해를 하는 ..

Day.9 자료구조 그리고 알고리즘 언어의 선택(Linked List)

어제의 연속선상으로 기초 자료구조와 알고리즘을 공부 다만 고민되는 것이 있다면, 파이썬 vs 자바 자바를 썩 잘하는 것은 아니지만, 익숙함 파이썬, 성능이 좋고 좋은 라이브러리가 많음, 익숙치 않음 어떤 언어를 가지고 직접 구현을 해보면서 따라갈지 고민이 된다. ( 오늘은 파이썬 강의를 가지고 자바로 바꿔 학습 진행 ) 알고리즘의 공부 방향에 대해서도 고민중.. (빨리 이 고민을 해결해야 할텐데) 오늘의 학습 정리 및 궁금증 1. Linked List 기차를 생각하면 가장 이해하기 쉽다. (앞 칸과 뒷 칸의 연결) 각 노드, 그리고 데이터와 포인터 => 각 노드들은 데이터와 포인터를 가지고 있다. ArrayList에 비해 데이터의 추가, 삭제가 용이하지만 따로 인덱스가 없어서 특정 요소에 접근하기 위해 ..

Day.8 Basic algorithm langu- python

오늘도 무난하게 공부했다. 알고리즘 시작 (Java와 C가 아닌 python으로 구현하려고 하니 왤케 버벅거리는지...) 알고리즘을 풀 땐, 역시,, 종이와 펜 오늘 강의를 보면서 정리를 해야겠다고 생각한 내용은 다음과 같다. 1. Python isalpha (완료) 일단 isalpha는 내장함수, 문자열에 공백이 있으면 안된다. 위에 해당하는 조건이 없다면? True 반환 아니면 False 이거 말고도 숫자인지 확인할 수 있고, 알파벳 또는 숫자인지 확인할 수 있는 내장함수가 있었다 isdigit = 숫자인지 확인 (기호 포함시 false, 문자도, 공백도 동일) isalnum = 숫자 또는 알파벳인지 (기호 및 공백 포함시 false 반환) 2. 비트맵 자료구조 (애매) 금일 2~4시까지 노드 튜터님..

Python 공부하며 궁금했던 점(2022.11.08 ver_01)

나는 파이썬을 정말로 간단하게만 배웠었다 대학교 (1학년 전공같은 전공아닌 전공?) 그 마저도 GUI를 이용한 간단한 수업이었는데, 그 떄 이후로 거의 벽을 쌓고 살았고, 그나마 공모전? 준비하면서 파이썬을 잠시 써본 것 같다. 그래서일까 파이썬에 대한 지식이 많이 부족했는데, 오늘 파이썬 문법 기초를 수강하며 새로 얻게 된 지식을 글로써 남기고자 한다. (변수나 뭐 이런 완전 기초적인 내용은 제외하고 내가 잘못 알고 있었던 혹은 새로 알게 된 지식에 대해서만 정리) 1. 파이썬은 흔히 우리가 사용하는 변수의 자료형을 명시하지 않는다 (명시를 하지 않아도 알아서 잡아주는게 편리하긴 했다.) 근데 어째서? 보통 파이썬처럼 변수의 자료형을 명시하지 않는 언어를 '동적 타입 언어'라고 한다 (그럼 자연스레 정..

Language/Python 2022.11.08