
2과목인 SW 개발은 말 그대로 서비스를 '개발'하는데 필요한 지식에 초점이 맞춰져 있다. 1장에 여러 자료 구조 및 알고리즘(트리, 정렬 등등.. 하기 싫다;)과 개발 후 패키징과 테스트 관리, 유지 보수까지의 내용이 주를 이룬다. 작성자의 경우 자료 구조와 알고리즘

계속해서 1과목 내용을 정리해보자. 원래 한 게시물에 다 담으려 했는데 생각보다 중요한 내용이 많아서 둘로 나누게 됐다..OOP, 객체 지향 프로그래밍이란 여러 독립적인 부품들의 조합, 즉 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을

본격적으로 정보처리기사가 되기 위한 공부를 해보려고 한다. 필기의 경우 기출이 중요하긴 하지만 그래도 기출 풀어보기 전에 작년에 밤새워가며 죽어라 했던 전공 과목들 기억들 되살릴겸 중요 개념부터 다잡고 가보자.1과목은 소프트웨어 '설계'다. 어느정도 다 익숙한 내용들이

이번 장에서는 코틀린 클래스 다루는 방법을 살펴본다. 자바와 달리 코틀린은 인터페이스에 프로퍼티 선언이 들어갈 수 있고, 선언이 기본적으로 final이며 public이다. 또한 내포 클레스(nested class, 중첩 클래스)는 기본적으로 내부 클래스가 아니다.

다음은 코틀린으로 "Hello World!"를 출력하는 함수이다. 여기서 찾을 수 있는 코틀린 문법의 특성은 다음과 같다.함수를 선언할 때 fun 키워드를 사용한다.함수를 모든 코틀린 파일의 최상위 수준에 정의할 수 있으므로 클래스 안에 함수를 넣을 필요는 없다. 즉,

Kotlin은 JVM(자바 가상머신) 플랫폼과 JVM외의 다른 플랫폼에서 돌아가는 현대 프로그래밍 언어이다kotlin은 처음에 '더 나은 자바'의 목적으로 처음 개발된 언어이다. 그 후 최근 10년간, 코틀린은 단순 JVM을 훨씬 뛰어넘어 cross-platform 솔

복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분의 문제들을 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법이 정의만 봤을 때는, 앞서 다뤘던 분할 정복(divide and conquer)와 매우 유사하다고 느낄 수 있다. 두 알고리즘 모두 큰 문제를 작은

'큰 문제'를 '작은 문제'로 나누어서 해결하는 알고리즘조금 더 풀어 말하자면, 하나의 큰 문제를 작은 부분의 문제들로 나누고, 나눈 부분 문제를 해결하고 해결된 해들을 모아 원래의 문제를 해결해 나가는 방식이다. 따라서 크게 '분할 > 정복 > 결합'의 단계를 지닌다

현재 상태에서 보는 선택지 중 최선의 선택지가 전체 선택지 중 최선의 선택지라고 가정하는 알고리즘위의 트리구조를 봤을 때, 그리디 알고리즘의 경우는 그 단계단계마다 무조건 제일 큰 쪽, 즉 최선의 선택지를 선택하는 것을 확인할 수 있다. 핵심 이론은 다음과 같다.Sol

최소 신장 트리(Minimum Spanning Tree) > MST, 최소 신장 트리란 그래프에서 모든 노드를 연결할 때 사용된 에지들의 가중치의 합을 최소로 하는 트리이다. MST를 구현하는 대표적인 방식 두 가지는 '크루스칼'과 '프림'이 있다. MST는 다음

1. DFS(깊이 우선 탐색) 2. BFS(너비 우선 탐색) 3. Binary Search(이진 탐색)

'그래프는 Node와 edge로 구성된 집합이다'Node: 데이터를 표현하는 단위Edge: Node를 연결가중치(Weight): 에지에 부여된 숫자값Tree 또한 그래프의 일종Union-Find: 노드들이 같은 그룹에 속해 있는지 확인할 때 사용, 싸이클 유무 판단위상

Huffman Encoding이란? Greedy algorithm의 대표적인 예시 *Greedy Algorithm: 매 순간 가장 이득이 되는 선택을 하는 알고리즘 문자들의 '빈도수'를 기반으로, 자주 나오는 문자는 짧은 코드, 길게 나오는 문자는 긴 코드를 부

의존성 주입(Dependency Injection): 컴포넌트 스캔앞서 개발했던 회원관리 서비스 개발에서, 회원 Controller가 회원 service와 회원 repository를 이용할 수 있도록 의존관계를 설정하려고 한다. 여기서 의존관계란, 한 객체가 다른 객체

비즈니스 요구사항 정리이번 스터디는 간단한 회원 관리 시스템을 개발해본다. 본격적인 개발을 시작하기 전에, 비즈니스 요구사항 및 웹 애플리케이션 구조와 클래스 의존관계에 대해 정의를 먼저 한다.데이터: 회원ID, 이름기능: 회원 등록, 조회데이터 저장소(DB)는 아직

정적 컨텐츠서버에서의 특별한 작업 없이 바로 클라이언트에 전달되는 파일들을 의미한다. HTML, CSS, Javascript, 이미지 파일과 같은 리소스들이 이에 해당된다. 스프링 부트는 정적 컨텐츠 기능을 자동으로 제공한다. 웹 브라우저에서 localhost8080/

Recursion의 정의재귀란, 문제를 더 작은 문제들로 나누어 해결해가는 문제 해결 과정이다. 문제를 해결하기 위해 자기 자신을 호출하는 방식으로 문제를 풀어나간다. 다른 말로 '자기 호출'이라고 표현하기도 한다. 이는 수학적 귀납법과도 밀접한 연관이 있다. 1부터