no image
[Algorithm] 투 포인터 알고리즘
1. Two Pointer Algorithm 정의- 1차원 배열에서 각자 다른 원소를 가리키고 있는 두 개의 포인터를 만들어서 각각이 가리키는 원소에 의미를 부여하여 요구하는 문제를 해결하는 알고리즘- 쉽게 말해 '두 개의 포인터'를 사용하여 '특정 조건을 만족하는 부분 구간'을 효율적으로 탐색하는 알고리즘- 배열이나 리스트가 정렬되어 있을 때 사용된다.- 정렬의 필요 여부는 기억해야할 과거 정보에 의존한다. 예를들어 i~j까지의 구간의 합 중 최대 값을 구하려면 기존 배열의 값들에서 슬라이딩 윈도우 기법으로 구해야 한다. 이 때는 정렬이 필요가 없다.  2. Two Pointer Algorithm 수행 단계1. 배열 또는 리스트의 시작 위치에 start, end 포인터를 설정한다.2. 두 포인터 사이의..
2025.01.12
자바 [Algorithm] 알고리즘 - 구간 합
구간 합 구간 합은 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘이다.코딩 테스트에서 사용 빈도가 높으니 꼭 알아야 한다.구간 합의 핵심 이론구간 합 알고리즘을 활용하려면 먼저 합 배열을 구해야한다.배열 A가 있을 때 합 배열 S를 구하는 공식S[i] = A[0] + A[1] + A[2] + … + A[i-1] + A[i] // A[0] 부터 A[i]까지의 합합 배열 S를 만드는 공식S[i] = S[i-1] + A[i]i에서 j까지 구간 합 구하는 공식S[j] - S[i-1]A[2] ~ A[5] 구간 합을 합 배열로 구하는 과정S[5] = A[0] + A[1] + A[2] + A[3] + A[4] + A[5]S[1] = A[0] + A[1]S[5] - S[1] = A[..
2024.03.19
no image
자바 [Algorithm] 자료구조 - 배열과 리스트
배열배열은 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조이다.배열의 값은 인덱스를 통해 참조할 수 있으며, 선언한 자료형의 값만 저장할 수 있다.배열의 특징인덱스를 사용하여 값에 바로 접근할 수 있다.새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다. 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정이 필요하다.배열의 크기는 선언할 때 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 없다.구조가 간단하므로 코딩 테스트에서 많이 사용한다.리스트값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조이다.노드는 컴퓨터 과학에서 값, 포인터를 쌍으로 갖는 기초 단위를 부르는 말이다.리스트의 특징인덱스가 없으므로 값에 접근하려면 Head 포인터부터 순..
2024.03.19
no image
자바 [Algorithm] 디버깅
디버깅이란? 프로그램에서 발생하는 문법 오류나 논리 오류를 찾아 바로 잡는 과정을 디버깅이라 한다. 문법 오류는 컴파일러가 자동으로 찾아 주므로 테스트할 때 문제가 되지 않는다. 논리 오류는 코드가 사용자의 의도와 다르게 동작하는 것이며 다양한 형태로 발생한다. 디버깅하는 법 코드에서 디버깅하고자 하는 줄에 중단점을 설정한다. 이때 중단점은 여러 개 설정할 수 있다. 2. IDE의 디버깅 기능을 실행하면 코드 1줄씩 실행하거나 다음 중단점까지 실행할 수 읶으며, 이 과정에서 추적할 변숫값도 지정할 수 있다. 이 방법으로 변숫값이 자신이 의도한대로 바뀌는지 파악한다 3. 변숫값 이외에도 원하는 수식을 입력해 논리 오류를 파악할 수 있다.
2024.03.19
no image
자바 [Algorithm] 시간 복잡도
1.1 시간 복잡도 표기법 알아보기 시간 복잡도란? 알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 연산 횟수를 말한다. 일반적으로 수행시간 1억번의 연산을 1초의 시간으로 간주하여 예측한다. 시간 복잡도 정의하기 Big-Omega(Ω) : 최선일 때(Best Case)의 연산 횟수를 나타낸 표기법 Big-Theta(θ) : 보통일 때(Average Case)의 연산 횟수를 나타낸 표기법 Big-O : 최악일 때(Worst Case)의 연산 횟수를 나타낸 표기법 코딩테스트에서의 시간 복잡도 사용 유형은? 코딩테스트에서는 Big-O 표기법을 기준으로 수행 시간을 계산하는 것이 좋다. 다양한 테스트 케이스를 수행해 모든 케이스를 통과해야만 합격으로 판단하므로 시간 복잡도를 판단할 때는 최학일 때(Wo..
2024.03.16
no image
자바 [JAVA] - 문자열을 정수로 변환
문자열을 정수로 변환할 수 있는 함수를 제공합니다. Integer.parseInt() 는 int형으로 반환합니다. Integer.valueOf() 는 Integer을 반환합니다. public class test { public static void main(String[] args) { String str1 = "12345"; String str2 = "-12345"; System.out.println("ParseInt : " + Integer.parseInt(str1)); System.out.println("ValueOf : " + Integer.valueOf(str2)); } }
2024.02.15
no image
자바 [JAVA] - 문자열 대소문자로 변환하는 방법 toLowerCase, toUpperCase
String 클래스에서는 문자열을 대소문자로 변환할 수 있는 함수를 제공합니다. toLowerCase 는 모든 문자열을 소문자로 변환합니다. toUpperCase 는 모든 문자열을 대문자로 변환합니다. public class String_toCaseTest { public static void main(String[] args) { // TODO Auto-generated method stub String str = "Hello DongYeop"; String substr1 = str.toLowerCase(); String substr2 = str.toUpperCase(); System.out.println(substr1); System.out.println(substr2); } }
2024.02.14