분류 전체보기 65

5. 메소드, 입출력

메소드나 객체지향과 같은 개념은 규모가 크고, 결함이 적고 유지 보수가 쉬운 프로그램을 만들기 위해 꼭 필요한 개념이다. 1. 메소드 코드를 재사용하게 해준다. 로직을 잘 짜서 활용하면 매우 경제적이다. 메소드의 정의 : 접근 제한자 (public, private), 함수 반환 타입, 함수 이름 등을 주의하여 호출한다. 메소드의 호출 : 메인 함수에 원하는 자리에 불러오면 된다. 2. 매개변수와 인자 메소드를 작성할 때, 메소드로 매개변수를 설정하고, main에서 인자를 보내면 메소드를 통해 자신이 원하는 결과를 얻을 수 있다 메소드를 다 실행하고 return 할 때, return 타입을 맞추는 것이 중요하다. return 타입은 메소드를 작성할 때 처음부터 설정해주어야 한다. 처음부터 타입을 설정하는게..

Java Spring 2023.03.27

4. 반복문, 배열

1. while while(조건) { } : 소괄호 안에 조건을 만족하는 동안 (true 인 동안) 반복문이 실행된다. 조건문을 잘못 설정하거나, while 문 내부에 루프 종료 조건을 제대로 설정해주지 않으면 에러가 발생한다. 무한루프 돌지 않게 조심할 것 2. for for (초기화 ; 종료 조건 ; 증감 등 변화 조건) { } : 소괄호 안에 쓰인 형식을 만족해야 에러가 발생하지 않는다. 초기화 부분은 반복문이 실행될 때 처음, 한 번 실행된다. 초기화 후 종료 조건이 실행되며, 이 조건이 false가 될 때 까지 반복문이 돌아간다. class Main { public static void main(String[] args) { int i = 0; while(i

Java Spring 2023.03.26

3. 비교, 조건문, 연산자

1. 연산자 산술 연산자 : 수식 계산이나 문자열 합치기 등에 사용되는 연산자. (+ - * / % 등이 있음) 형변환 : (정수 / 정수 = 정수) (실수 / 실수 = 실수) (정수 / 실수 = 실수) (실수 / 정수 = 실수) 단항 연산자 : 하나의 항을 대상으로 하는 연산자 (+ - ++ --) 등이 있으며 특히 증감을 나타내는 연산자는 많이 쓰이며, 위치에 따라서 증감의 순서가 바뀐다. println(); 에서 쓸 때 순서에 주의하자. 연산자의 우선 순위 2. 비교와 Boolean Boolean : 참과 거짓을 의미하는 데이터 타입 비교 연산자(관계 연산자) : 좌항과 우항의 대소비교를 할 때 쓰인다. .equals : 문자열 비교시에 쓰이는 메소드 class Main { public static..

Java Spring 2023.03.26

이진 탐색 Binary Search (Python)

이진 탐색은 이미 순서대로 정렬된 arr에서, 특정 값을 보다 빠르게 찾기 위해서 사용되는 방법이다. 처음부터 차례대로 탐색하는 순차탐색 O(N) 과 다르게, 중앙값 mid 를 기준으로 나눈 arr에서 target이 앞/뒤 중 어디에 위치하는지를 찾는다. 이진 탐색의 시간 복잡도는 O(log N) 으로, 보다 빠른 탐색이 필요한 PS에서 유용한 라이브러리로 사용할 수 있다. 이진 탐색 함수를 짤 때 두 가지 방법으로 짤 수 있다. 하나는 재귀적으로, 남은 하나는 반복적으로 짜는 방법이다. 간단하게 PS 용으로 쓰기 위해서는 반복적인 방법을 주로 사용한다. 코드 짜기 쉽고, Python의 재귀 깊이를 고려하지 않기 위함이다. 또한, 이진 탐색 코드를 짤 때 주의할 점이 있다. (1) 탐색을 진행할 arr가..

PS 기록/Algorithm 2023.03.26

1. Kotlin 시작하기

더보기 1. 변수 선언 lateinit 으로 선언한 변수는 선언과 동시에 초기값을 할당하지 않아도 괜찮다. 하지만 사용할 수 있는 유형이 한정되어 있다. (ex. String 타입) Int, Long, Short, Double, Float, Boolean, Byte 타입에는 lateinit을 사용할 수 없다. 변수를 선언할 때 val data4: Int by lazy { } 를 사용하면, 나중에 data4가 제일 처음 호출되었을 때, { } 안에 있는게 실행되면서 초기값을 넣어준다. lazy 문의 중괄호 부분을 여러 줄로 작성하면, 마지막 줄의 실행 결과가 변수의 초기값이 된다. lateinit var data3: String val data4: Int by lazy{ println("in lazy.....

Kotlin 2023.03.21

2. Data Type

더보기 1. Java의 Data Type 이전에 Python을 자주 사용해서 변수 타입을 명시적으로 선언 하는 것과 Overflow에 대해서 크게 신경쓰지 않고 있었는데, Java를 리뷰하면서 관련 개념을 혼동하지 않도록 다시 정리하겠다. Data Type Memory Range byte 1 byte -128 ~ 127 short 2 byte -32,768 ~ 32,767 int 4 byte -2,147,483,648 ~ 2,147,483,647 long 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 Data Type Memory float 4 byte double 8 byte 들어 갈 수 있는 실수 Range가 너무 커서 생략했다. Dat..

Java Spring 2023.03.20

1. Java Review (by 생활 코딩)

더보기 썸네일용! 이전에 학교에서 '객체지향프로그래밍', 'Java 프로그래밍 실습'을 수강했는데, Java 코딩을 마지막으로 한 지 시간이 흘러서 Java의 문법과 특징을 전체적으로 리뷰하려고 한다. ++ 보조 자료로 생활 코딩의 Java 강의를 활용할 예정이다. 1. Java를 시작할 때 Java는 객체 지향 언어로, class가 아주 중요한 언어이다. 우선 Java 코드의 실행을 위해 class Main 을 선언하고, 그 아래 public static void main(String[] args) { }로 main 함수를 만든다. 다른 언어와 main 함수 선언, 생김새가 조금 다르므로 이 특징을 잊으면 안된다. 또한, 변수 선언을 할 때, type을 명시한다. 아래 코드에서는 두 가지 선언을 보여준..

Java Spring 2023.03.18

겨울 방학 사이의 꾸준함을 기록하다

오늘은 2월 마지막 날이고, 내일 3월이 되면 이제 개강이다!! 본격적으로 학기를 시작하기 전에 겨울 방학 동안 스스로 세운 목표를 잘 이뤄서 뿌듯했고, 전체적인 회고록을 작성하게 되었다. 백준 (Solved.ac) 기준 티어 골드 달성하기 PS 시작하고 하루도 빠짐 없이 문제 풀기 코딩 테스트 기본기 실력 쌓기 자료 구조 / 알고리즘의 기본적인 내용 1회독 하기 => 23-1학기를 위한 예,복습 CS 지식 쌓기 => CS 책 구매해서 읽기, 기술 블로그 읽어보기 그리고 1, 2, 3, 4, 5 번을 모두 달성했다!! 내가 엄청난 천재는 아니지만, 꾸준히 하면 이룰 수 있을 것 같다고 생각해서 이렇게 정했다. 처음 PS를 시작하는 거라서 혹시 높게 목표를 잡은 건 아닐지 걱정도 했..

PS 기록 2023.02.28

Heap, Priority Queue (우선순위 큐)

1. Heap Heap : 무더기, 더미를 의미함 컴퓨터 기억 장소에서 일부분이 프로그램에 할당 되었다가 회수되는 작용이 되풀이되는 영역 Heap의 기억장소는 대부분 Pointer 변수를 통해 동적으로 할당받고 돌려줌 아래 메모리 구조 그림을 참고 2. 자료구조 Heap 자료구조로 쓰이는 Heap: 데이터에서 최댓값, 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리 완전 이진 트리: 자식노드가 왼쪽부터 꽉 채워지는 트리 부모 노드 index = 자식 노드 index // 2 Left 자식 노드 index = 부모 노드 index * 2 Right 자식 노드 index = (부모 노드 index * 2) + 1 배열로 구현할 때 index 1부터 시작하는게 편함 3. Heap 사용 이유 배열에서 max,..

PS 기록/Algorithm 2023.02.17