본문 바로가기

전체 글

(16)
시간 복잡도(Time Complexity) 공부하기 알고리즘을 공부하면서 '시간 복잡도(Time Complexity)'라는 개념이 얼마나 중요한지 자주 마주하게 된다. 시간 복잡도는 알고리즘이 주어진 입력을 처리하는 데 걸리는 시간을 나타내는 개념으로, 이를 이해하면 알고리즘의 효율성을 평가하는 데 큰 도움이 된다. 이번에는 시간 복잡도가 무엇인지, 그리고 왜 중요한지에 대해 깊이 있게 공부해보자.시간 복잡도란?시간 복잡도는 알고리즘이 어떤 입력을 받았을 때, 그 입력을 처리하는 데 걸리는 시간을 나타낸다.주로 입력 크기(input size)에 대한 함수로 표현되며, 입력이 커질수록 알고리즘이 얼마나 더 오래 걸리는지를 설명해준다.시간 복잡도 표기법 - Big-O 표기법시간 복잡도는 보통 Big-O 표기법을 사용해 표현한다. 이 표기법은 입력 크기에 따라..
알고리즘 공간복잡도 공부하기 공간 복잡도란?이번 포스트에서는 공간 복잡도에 대해 알아보겠습니다. 공간 복잡도는 알고리즘을 평가할 때 중요한 개념 중 하나입니다. 특히, 알고리즘이 얼마나 많은 메모리 공간을 필요로 하는지 이해하는 데 유용합니다.공간 복잡도의 정의공간 복잡도는 알고리즘을 실행하는 데 필요한 메모리 공간의 양을 의미합니다. 이는 알고리즘이 입력 데이터를 처리하고, 중간 결과를 저장하며, 최종 출력을 생성하기 위해 사용하는 메모리의 양을 나타냅니다. 메모리 사용량이 적을수록 효율적인 알고리즘으로 평가됩니다.공간 복잡도를 이해하기 위한 비유상황극: 우리가 정원에서 보물찾기를 하고 있다고 가정해 봅시다.보물은 정원에 숨겨져 있으며, 우리는 단서를 따라 보물을 찾아야 합니다.우리는 여러 가지 크기의 상자를 사용할 수 있습니다...
java의 작동 원리 Java의 작동 원리Java는 1996년에 썬 마이크로시스템즈(Sun Microsystems)에 의해 발표된 객체 지향 프로그래밍 언어로, 현재도 널리 사용되고 있습니다. Java의 가장 큰 특징 중 하나는 플랫폼 독립성으로, 한 번 작성된 코드를 다양한 운영체제에서 실행할 수 있습니다. 이번 포스트에서는 Java의 작동 원리와 그 핵심 요소들을 상세히 살펴보겠습니다.1. Java의 기본 개념Java는 플랫폼 독립적인 객체 지향 프로그래밍 언어입니다. Java로 작성된 프로그램은 자바 가상 머신(JVM, Java Virtual Machine)을 통해 실행되며, 이로 인해 운영체제에 관계없이 동일한 코드를 실행할 수 있습니다. Java의 주요 특징은 다음과 같습니다:객체 지향 프로그래밍 언어: Java는 ..
Java Method의 개념과 활용 예제 정리 MethodMethod란?어떠한 특정 작업을 수행하기 위한 명령문의 집합Method를 사용하는 이유모듈성: 코드의 복잡성을 줄이고 이해하기 쉬워짐유지보수: 프로그램 수정이나 확장이 용이해져 유지보수가 쉬워짐재사용성: 중복되는 코드의 반복적인 프로그래밍 회피Method의 기본 구조접근제한자 반환타입 메서드명(매개변수목록) { //선언부 // 메서드 몸체 // 수행할 코드 return 반환값; // 반환타입이 void가 아닐 경우 필요}접근제어자 :해당 메소드에 접근할 수 있는 범위를 명시public: 외부 클래스에서 자유롭게 사용할 수 있다.protected: 같은 패키지 또는 자식 클래스에서 사용할 수 있다.private: 외부에서 사용할 수 없다. (클래스 내부에서만 사용가능)defau..
Java 필드(Field)의 개념과 사용 방법 Java Field 개념 정리Field 정의클래스의 상태를 나타내는 변수객체의 데이터, 속성, 상태를 저장클래스 레벨에서 관리되는 멤버 변수자동차 객체의 경우 제작회사, 모델, 색상, 엔진 등의 정보가 Field로 저장됨Field 선언 방법접근 제어자 (public, private 등)데이터 타입 (int, String 등)변수명클래스 내에서 선언되며 생성자와 메소드 앞뒤 어디서든 가능public class Car { public String model = "KIA"; // public 필드 private String color; // private 필드 private int maxSpeed; // private 필드} Field 사용 방법클래스 내부에..
알고리즘 기초 : 분할정복, 병합정렬, 이진 탐색, 퀵 정렬 쉽게 이해하기 🦖 분할정복(Divide and Conquer)오늘은 분할정복이라는 알고리즘에 대해 공부한 내용을 정리해보려 합니다. 분할정복은 문제를 작은 문제로 나누어 해결하는 방식인데, 어떻게 작동하는지, 그리고 이 방식이 어떤 장단점을 갖는지 공부해보겠습니다.개념 정리분할정복이란, 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법입니다. 각 부분 문제의 답을 재귀 호출로 계산하고, 이 답을 모아 전체 문제의 답을 계산합니다. 쉽게 말해, 큰 문제를 작게 쪼개고, 이 작은 문제들을 해결해서 전체 문제를 해결하는 것이죠.Divide and Conquer의 단계분할(Divide): 문제를 더 이상 분할할 수 없을 때까지 동일한 유형의 여러 하위 문제로 나눕니다.정복(Conquer): 가장 작은..
Java Class & constructor 개념 정리 클래스(Class)란?클래스(Class)는 객체 지향 프로그래밍(OOP)의 핵심 요소 중 하나입니다. 클래스는 객체(Object)의 설계도 또는 템플릿으로, 객체를 생성하기 위한 구조와 동작을 정의합니다. 클래스는 데이터(속성, 멤버 변수)와 메서드(동작, 멤버 함수)를 포함할 수 있습니다. 클래스 내의 모든 구성 요소가 필수로 들어가 있어야 하는 것은 아닙니다.FizzBuzz 예제클래스를 이해하는 데 도움을 줄 수 있는 간단한 예제로 FizzBuzz를 살펴보겠습니다. 이 예제는 main 메서드 하나로 동작하는 클래스입니다.class FizzBuzz { public static void main(String[] args) { int i = 0; while (i 이 코드는 1..
비전공자가 공부하는 컴퓨터 사이언스에 관련 기본적인 개념 AI for Future Workforce Program 2기를 수료하고 기본 지식에 대한 부족함을 느껴,처음부터 차근차근 기본 개념을 공부하는 블로그.2024년 3월부터 2024년 9월까지 들었던 강의 내용을 토대로 정리하고부족했던 부분을 채우기 위해 심화 학습을 진행하려고 한다. Kotlin 언어를 주로 사용하며 필요 시 Java, Python 언어도 꾸준히 학습 할 예정이다.CS 관련 지식 글은 무조건 하루에 1~2일에 하나씩 올리는걸로 한다.