전체 글 (165) 썸네일형 리스트형 Ch.10 재귀를 사용한 재귀적 반복 (도서 요약 "누구나 자료구조와 알고리즘") 재귀(recursion)를 올바르게 사용하면 까다로운 문제 유형을 놀랍도록 간단하게 해결할 수 있다. public void recursion() { recursion(); } 위 메서드를 호출하면 자신을 반복적으로 호출하면서 무한대로 호출된다. 재귀는 함수가 자기 자신을 호출할 때를 뜻한다. 10. 1 루프 대신 재귀 만약 당신이 NASA에서 우주선 발사에 쓰일 카운트다운 메서드를 프로그래밍해야 한다면 어떻게 하겠는가? 10부터 0까지 숫자를 표시해야 하면 보통 '루프' 메서드를 사용할 것이다. public void countdown(int number) { for (int i = number; i >= 0 ; i--) { System.out.println("카운트 다운 " + i); } } 구현에는 문.. (제45회) SQLD 자격 검정 합격 후기 및 공부 방법 - 자격명: SQLD - 국가공인자격 - 회차: 제 45회 - 시험 일시: 2022.05.28 - 시험 시간: 1시간 30분 (총 90분) - 주관사: Kdata (한국데이터산업진흥원) - 문제 유형: 객관식 40문제 + 단답식 10문제 (총 50문제) - 검정비: 5만 원 무지한 상태에서 SQLD에 도전하기까지 나는 비전공자이다. 처음 SQL을 접했을 때는 22년 3월 10일쯤이었다. 아직 Java에 대해서도 잘 모르는 상태여서 모든 것이 막막한 상황에 놓여 있었다. 심리적인 불안감이 커져가던 때 마음에 두고 있던 부트캠프 모집 요건이 눈에 들어왔다. 코딩 테스트에 Java 문제가 있는 건 당연하다고 느꼈지만, 테스트 범위 중 등장한 SQL은 굉장히 생소했다. SQL.... [Java] '재귀 함수'를 사용해서 내부 객체를 탐색하기 (feat. 족보 구현) 여기 Human(사람) 클래스가 있다. public class Human { private String name; private String gender; private ArrayList subHumanList; public Human(String name, String gender) { this.name = name; this.gender = gender; subHumanList = new ArrayList(); } public void addHumanList(Human human) { subHumanList.add(human); } } 사람 한 명을 만들면, 그 사람은 '이름'과 '성별'을 가진다. 이름과 성별은 한 개의 값만 가지는 것이 자연스럽다. 그리고 그(또는 그녀)는 자식을 낳을 수 있다. .. [8주 차 학습후기] Java&Spring boot로 시작하는 웹프로그래밍 (feat. 자바 인강) - 총 8주 과정 (22.03.23 ~ 22.05.18) - 총 33시간 과정 - 100% 온라인 진행 - Lv.2 (실전-심화) - 무료 (K-Digital training 지원) 8주 차 학습일지 (22.05.11 ~ 05.17) - (선택사항)웹 프로그래밍_추가제공2_스프링부트 CRUD (ch.16) - (선택사항)웹 프로그래밍_추가제공2_스프링부트 CRUD (ch.17) 드디어 마지막 주차까지 도달했다. 자바 관련 수업을 전부 수강했고, 남은 일주일 동안은 스프링부트 강의를 들었다. 해당 강의만으론 스프링부트을 이해하긴 힘들었던 것이 사실이다. 강의 초반에 강사가 안내했듯이 이론보단 실습 위주로 진행되었기 때문에 스프링부트의 작동 원리를 이해하는 데는 한계가 있었다. 이론적인 바탕이 있어야 습득이.. Ch.09 스택과 큐로 간결한 코드 생성 (도서 요약 "누구나 자료구조와 알고리즘") '스택'과 '큐'란 새로운 자료 구조는 "제약을 갖는 배열"로, 임시 데이터를 처리할 수 있는 간결한 도구다. 우리는 이것들을 임시 컨테이너로 사용해서 뛰어난 알고리즘을 만들 수 있다. 한 예로 손님이 주문한 내역은 식사를 준비하는 데까지만 중요하고, 이후는 버려진다. 해당 정보를 계속 가지고 있을 필요가 없으므로 임시 데이터란 다 쓴 후에는 버려도 된다. 스택과 큐는 이와 같은 임시 데이터를 처리하되 데이터를 처리하는 '순서'에 중점을 둔다. 9. 1 스택 '스택(stack)'이 데이터를 저장하는 방법은 배열과 같다. 단순히 원소들의 리스트다. 다만 3가지 제약이 있다. - 데이터는 스택의 끝에만 삽입할 수 있다. - 데이터는 스택의 끝에서만 삭제할 수 있다. - 스택의 마지막 원소만 읽을 수 있다. .. [7주 차 학습후기] Java&Spring boot로 시작하는 웹프로그래밍 (feat. 자바 인강) - 총 8주 과정 (22.03.23 ~ 22.05.18) - 총 33시간 과정 - 100% 온라인 진행 - Lv.2 (실전-심화) - 무료 (K-Digital training 지원) 7주 차 학습일지 (22.05.04 ~ 05.10) - (선택사항)자바의 다양한 기능들-(12,23) - (선택사항)자바의 다양한 기능들-(24,25,26) 본격적으로 쓰레드스레드 공부를 했다. 자바를 공부하면서 스레드란 단어는 많이 보았지만 정확히 무엇인지 잘 몰랐는데 어떤 개념인지 알 수 있었다. 컴퓨터의 하드디스크에 있는 프로그램을 실행시키면 그 프로그램은 메모리에 올라가고, 이후 CPU를 차지해야 수행이 가능한데 그 단위를 thread라고 한다. 지금까지 짰던 짤막한 코드들은 모두 단일 스레드로 진행했다. 물론 강의를.. Ch.08 해시 테이블로 매우 빠른 룩업 (도서 요약 "누구나 자료구조와 알고리즘") 일반 배열에서 '선형 검색'을 할 때는 모든 원소들을 쭉 찾아야 하기 때문에 O(N) 단계가 걸린다. 만약 정렬이 되어있다면 '이진 검색'을 수행할 수 있어 O(logN)이 걸려 훨씬 빨라진다. 그러나 이보다 훨씬 더 좋아질 수 있다. '해시 테이블'을 이용하면 O(1) 만에 검색이 가능하다. 해시 테이블의 동작 방법, 사용처를 알면 많은 상황에서 해시 테이블의 엄청난 검색 속도를 활용할 수 있다. 8. 1 해시 테이블 대부분의 프로그래밍 언어는 '해시 테이블(hash table)'이라는 자료 구조를 포함하며, 빠른 검색 속도가 장점이다. 해시 테이블은 쌍으로 이뤄진 값들의 리스트다. 첫 번째 항목을 '키(key)'라 부르고, 두 번째 항목을 '값(value)'이라 부른다. 해시 테이블에서 키와 값은 서.. Ch.07 일상적인 코드 속 빅 오 (도서 요약 "누구나 자료구조와 알고리즘") 코드가 얼마나 빠른지 파악하는 것이 최적화의 첫 번째 단계이다. 더욱이 코드가 빅 오 표기법 관점에서 어떤 카테고리에 해당하는지 알면 최적화의 필요성을 판단할 수 있다. 7. 1 짝수의 평균 만약 수 배열을 받아 모든 짝수의 평균을 반환하는 메서드가 있다고 하자. public double averageOfEvenNumbers(int[] arr) { int sum = 0; int count = 0; for(int i=0; i Ch.06 긍정적인 시나리오 최적화 (도서 요약 "누구나 자료구조와 알고리즘") 지금까지는 주로 최악의 시나리오에서 얼마나 많은 단계가 걸리는지에 초점을 맞췄지만, 최악의 시나리오 외에도 고려할 가치가 있는 상황들이 있다. 그래서 모든 시나리오를 고려할 수 있는 능력이 중요하다. 6. 1 삽입 정렬 버블 정렬과 선택 정렬 둘 다 효율성이 O(N²)이지만, 실제론 선택 정렬이 두 배 더 빠르다. '삽입 정렬(insertion sort)'은 또 다른 정렬 알고리즘이다. 삽입 정렬은 다음과 같은 단계를 따른다. (1) 첫 번째 패스스루에서 '임시로' 인덱스 1(두 번째 셀)의 값을 삭제하고, 이 값을 임시 변수에 저장한다. 이제 인덱스 1에 값이 없으므로 공백이 생긴다. (2) 공백 왼쪽에 있는 값을 임시 변수에 저장한 값과 비교한다. (3) 공백 왼쪽에 있는 값이 임시 변수에 있는 값보.. Ch.05 빅 오를 사용하거나 사용하지 않는 코드 최적화 (도서 요약 "누구나 자료구조와 알고리즘") 빅 오는 알고리즘을 서로 비교하는데 훌륭한 도구다. 하지만 빅 오 표기법에서는 한 알고리즘이 다른 알고리즘보다 훨씬 빠른 경우에도 두 알고리즘을 정확히 똑같은 방식으로 표현하기도 하는 한계가 있다. 따라서 효율성이 같아 보이는 두 알고리즘을 구별해 내서 더 빠른 알고리즘을 고르는 별도의 방법이 있다. 5. 1 선택 정렬 '선택 정렬(selection sort)'은 또 다른 정렬 알고리즘이다(앞에서 본 '버블 알고리즘'은 O(N²)이었다). 선택 정렬은 다음과 같은 단계를 따른다. (1) 배열의 각 셀을 왼쪽부터 오른쪽 방향으로 확인하면서 어떤 값이 최솟값인지 확인한다. (2) 한 셀씩 이동하면서 현재까지 가장 작은 값이 있는 인덱스를 변수에 저장한다. (3) 현재 최솟값보다 작은 값이 들어 있는 셀을 만.. [6주 차 학습후기] Java&Spring boot로 시작하는 웹프로그래밍 (feat. 자바 인강) - 총 8주 과정 (22.03.23 ~ 22.05.18) - 총 33시간 과정 - 100% 온라인 진행 - Lv.2 (실전-심화) - 무료 (K-Digital training 지원) 6주 차 학습일지 (22.04.27 ~ 05.03) - (선택사항)자바의 다양한 기능들-(13,14,15) - (선택사항)자바의 다양한 기능들-(16,17,18) - (선택사항)자바의 다양한 기능들-(19,20,21) 자바 입출력 스트림 파트로 넘어왔다. 여기서부턴 필기보다 실습 위주의 수업이 이뤄졌다. 솔직히 입출력 파트는 해당 영상만 봐선 이해가 잘 안 됐다. 이건 내가 자바의 정석 책을 보면서 천천히 내 것으로 만드는 노력이 필요할 듯하다. 클래스도 많고 메서드도 많아서 헷갈렸다. 암기보단 익숙해져야 할 것 같다. 아직.. Ch.04 빅 오로 코드 속도 올리기 (도서 요약 "누구나 자료구조와 알고리즘") 빅 오를 사용 하면 내가 만든 알고리즘과 세상에 존재하는 범용 알고리즘을 비교할 기회가 생기며, 제작한 알고리즘이 얼마나 빠른지 혹은 느린지 확인이 가능하다. 이번 파트에선 빅 오를 사용해서 작성한 알고리즘을 평가해본다. 그리고 효율성을 높이기 위한 알고리즘 수정 방법도 알아본다. 4. 1 버블 정렬 정렬 알고리즘은 컴퓨터 과학 분야에서 폭넓게 연구된 주제이며, 지난 수년간 수십 개의 정렬 알고리즘이 개발돼 왔다. 이러한 알고리즘은 모두 "정렬되지 않은 배열을 어떻게 오름차순으로 정렬할 수 있을까?"에 대한 문제를 해결한다. 가장 먼저 '단순 정렬(simple sort)'이라고 알려진 알고리즘 분류가 있다. 이것은 이후 배울 알고리즘보다 비효율적이다. 대표적으로 "버블 정렬(bubble sort)"가 있.. [완강 후기] 안랩샘 14기 '자바프로그래밍 입문' - 공부 기간 : 2022년 3월 19일 ~ 4월 23일 (주 1회, 총 5주 과정) - 강의 시간 : 총 20시간 - 플랫폼 : 맘잡고 - 100% 온라인 강의 선택 이유 당시의 나는 햇병아리 그 자체였다. 개발자가 되고 싶은데 무엇을, 얼마나 공부해야 할지 감조차 잡지 못했던 상황에서 욕심은 많았다. 오히려 모르니깐 장밋빛 미래를 상상할 수 있었다. 그러나 한편으로는 두려웠다. 지금 내가 공부한답시고 펼쳐 놓은 자바 책의 내용도 모두 공부하지 못한 상태인데, 여러 부트캠프 커리큘럼에 등장하는 수많은 IT 기술 용어들을 보면 한 걸음도 내딛지 못한 것 같아 너무 막막했다. 그래도 일단 'Java' 언어의 기본이 충실해야 한다는 생각은 바뀌지 않았다. 아직 이 언어가 어떻게 쓰이는지도 모르는 상태였지만,.. [5주 차 학습후기] Java&Spring boot로 시작하는 웹프로그래밍 (feat. 자바 인강) - 총 8주 과정 (22.03.23 ~ 22.05.18) - 총 33시간 과정 - 100% 온라인 진행 - Lv.2 (실전-심화) - 무료 (K-Digital training 지원) 5주 차 학습일지 (22.04.20 ~ 04.26) - (선택사항)자바의 다양한 기능들-(1,2,3) - (선택사항)자바의 다양한 기능들-(4,5,6) - (선택사항)자바의 다양한 기능들-(7,8,9) - (선택사항)자바의 다양한 기능들-(10,11,12) 정규(?) 코스를 끝낸 후 이번 주는 '선택사항' 과정에 들어갔다. 선택사항은 수료 기준에 들어가진 않지만 추가 학습을 제공한다. 선택사항에 포함된 수업은 자바와 관련된 기능들과 스프링 수업이 있다. 전 시간에 스프링 수업에 대한 실망이 커서 일단 자바 추가 학습만 진행하.. Ch.03 빅 오 표기법 (도서 요약 "누구나 자료구조와 알고리즘") 알고리즘의 효율성은 '알고리즘 수행에 필요한 단계 수'이다. 하지만 알고리즘에 필요한 단계 수는 하나로 정할 수가 없다. 선형 검색만 해도 배열의 원소 수만큼 단계가 필요하기 때문에 배열의 크기에 따라 필요한 단계 수가 다르다. 그래서 자료 구조와 알고리즘의 효율성을 간결하고 일관된 언어로 말하기 위해 형식화한 표현이 바로 '빅 오 표기법'이다. 3. 1 빅 오 : 원소가 N개일 때 몇 단계가 필요할까? 최악의 경우 선형 검색에는 배열의 원소 수만큼의 단계가 필요하다. 빅 오 표기법으로 표현하는 방식은 다음과 같다. O(N) 위 표기는 "데이터 원소가 N개일 때 알고리즘에 몇 단계가 필요한가" 질문에 대한 답을 나타낸다. 그 해답은 빅 오 표현의 괄호 안에 들어있는데, "알고리즘에 N단계가 필요하다"는 .. 이전 1 ··· 7 8 9 10 11 다음