본문 바로가기

develop

Think Data Structures (2) -초보개발자- - 프로파일링 (profiling : 자료 수집) 어떤 응용 프로그램에 어느 클래스가 더 좋을지 결정하는 한 가지 방법. 둘 다 시도해 보고 각각 얼마나 걸리는지 알아보는 것. 문제점) 1. 알고리즘을 비교하려면 사전에 그것을 모두 구현해봐야 한다. 2. 결과는 사용하는 컴퓨터의 성능에 의존한다. (컴퓨터마다 결과가 다름) 3. 결과는 문제 크기나 입력으로 사용하는 데이터에 의존하기도 한다. ----- (이해되지 않음) ---- > '알고리즘 분석'을 사용하여 문제점 해결 가능 [ 알고리즘 분석은 그것을 구현하지 않고도 알고리즘을 비교할 수 있게 함 ] But ;; 몇 가지 가정을 해야 한다. 1. 컴퓨터 하드웨어의 세부사항 다루지 않기 위해 알고리즘 이루는 더하기, 곱하기, 숫자 비교 등의 기본 연산을.. 더보기
YOUTHCON'20 -초보개발자- 어제 (일요일) 유스콘이라는 컨퍼런스를 들었다. 온라인 Zoom으로 발표를 듣는 것이다. 이 컨퍼런스의 취지는 발표를 잘하는 사람이 발표를 하는 것이 아닌 나도 많은 사람 앞에서 발표를 할 수 있다는 취지이다. 발표 실력을 높이고 자신감을 높이는 것을 취지로 하는 것이라 생각이 든다. 나는 개발용어를 모른다. 그렇기에 내용도 알아듣지 못한다. 하지만 분명 도움이 될 것이라 생각이 되어 듣게 되었다. 발표 내용에는 나중에 나에게 도움이 될 것들을 포함하고 있었다. 약 2시간정도 컨퍼런스가 진행된다. 밑의 사진들은 발표 내용을 캡처한 것이기에 저작권은 '유스콘'에 있다. 이처럼 내가 쉽게 이해할 수 있는 내용들을 발표해주신 분들도 있고 개발 용어쪽을 알려주시는 분들도 있었다. 청중들 중에 QnA 시간에 각 .. 더보기
Think Data Structures (1) -초보개발자- 어젯밤에 책을 사고 새벽에 일어나 1장을 펼쳤다. 하지만 모르는 단어들이 많았다. 아니, 모두 모르는 단어였다. 여러 번 읽어서 눈에 익혀야겠다. JCF 란? Java Collection Framework의 약자. Java에서 데이터를 저장하는 기본적인 자료구조들을 한 곳에 모아 관리하고 편하게 사용하기 위해 제공하는 것 사용 용도에 따라 List, Set, Map 3가지로 요약 가능. 회색 상자에 표현된 Collection, Map과 파란색 상자에 표현된 List, Set은 모두 인터페이스이며 하이얼 아키를 가지고 있다. (하이얼 아키 구글에 쳐보니 외계인 이야기만 나온다.. 일단 넘긴다) 인터페이스란? 인터페이스란? 극단적으로 동일한 목적 하에 동일한 기능을 보장하게 하기 위함. 어떻게? 자바의 다형.. 더보기
Github에 잔디 심는 법 -초보개발자- 어제 친구에게 github에 대해서 배웠는데 역시 처음이라 너무 어려워 보였다. 복습 차 블로그에 글로 되새겨본다. github 페이제에 잔디(?) (개발하시는 분들은 아실 것이다)를 심으려면 2가지 방법이 있다. 나는 코딩 테스트(문제)를 풀고 그것을 올릴 것이다. 1. '인텔리제이'에서 마우스로 클릭하여 바로 올리는 법 1) 코딩테스트 (문제)를 푼다. 2) 'Command+K'를 누른다.(맥) - 추가된 것이 보인다. 3) Commit Message에 설명을 쓴다. ex) feat : Test 추가 4) Commit 클릭 ( 아직 github에는 안 올려져 있다.) 5) 'git push' 쓰고 엔터 ------ ex) algorithm git:(main) git push --------- 위 글이.. 더보기
3항 연산자 -초보개발자- 단순한 if/else문일 경우, 간단히 코드를 표현할 수 있는 방식이다. 형태는 Condition ? A : B 1. Condition : true/false를 반환하는 조건식이다. 2. ? : 뒤에 오는 값이 Condition에 따른 리턴 값임을 알려주는 '약속어'이다. 3. A : Condition의 결과가 true인 경우 리턴되는 값이다. 4. : : 반환 값을 구분하는 '구분자'이다. 5. B : Condition의 결과가 false인 경우 리턴되는 값이다. 3항 연산자를 사용하면 길이가 줄어든다. 하지만 코드의 라인이 줄었다고 컴파일 속도가 빨리지는 것은 아니다. 또한 중복해서 사용할 경우, 가독성이 떨어지므로 피하는 것이 좋다. 더보기
비트 연산자란? -초보개발자- 우선 연산자는 '연산을 수행하는 기호'를 이야기한다. ----------------------------------------------- 비트 연산자 비트 연산자는 bit단위로 논리 연산을 할 때 사용한다. - 비트 연산자의 종류 1. & : 대응되는 비트가 모두 1이면 1을 반환한다. 2. | : 대응되는 비트 중에서 하나라도 1이면 1을 반환한다. 3. ^ : 대응되는 비트가 서로 다르면 1을 반환한다. 4. ~ : 비트를 1이면 0으로 0이면 1로 반전시킨다. 5. > : 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킨다. 7. >>> : 비트값을 오른쪽으로 이동한 후 왼쪽 공간은 모두 0으로 채운다. 더보기
변수의 Scope와 Lifetime -초보개발자- 1. Lifetime 이란? Lifetime은 해당 변수가 메모리에 언제까지 살아있는지를 의미한다. 2. Scope 이란? 변수의 스코프란 해당 변수를 사용할 수 있는 영역범위를 뜻한다. 변수는 지역변수, 매개변수, 인스턴스 변수, 클래스 변수에 따라 라이프 타임이 나뉘게 된다. 클래스 변수와 인스턴스 변수는 '클래스 영역' 지역 변수는 '클래스 영역 이외의 영역' ✓ '지역변수'는 블록 안에 변수를 선언하고 블록이 끝나기 전까지 유효하다. ✓ '매개변수'는 메소드 괄호 안에 선언하고 메소드가 끝나기 전까지 유효하다. ✓ '인스턴스 변수'는 클래스 선언 시 static 키워드 없이 선언된 필드이다. 이 필드는 인스턴스 별로 다른 값을 가질 수 있기 때문에, 인스턴스 변수라고 불린다. static meth.. 더보기
리터럴과 변수 선언 및 초기화 -초보개발자- 1. 리터럴(Literal) 이란? 데이터 그 자체이다. 즉 변수에 넣는 변하지 않는 데이터를 의미한다. 예를 들어 int a = 1; //리터럴은 1 2. 변수 선언하기 예를 들어 설명해보면 int a; // int 타입의 저장공간을 확보하고 그 저장공간을 a라 했다. 3. 변수 초기화하기 a = 1; 이것은 (a라는 변수에 '1' 값을 대입)했다고 한다. 초기화란? 변수를 선언했을 때, 동시에 변수에 값을 저장하는 것이다. 예를 들어 int a = 1; 이것은 변수를 1로 초기화하고 있다고 말한다. 정리하자면 ' 변수 초기화 = 변수 선언 + 변수에 값 대입 ' 더보기