no image
자바 [Algorithm] 누적합 - 백준 2167 2차원 배열의 합
1. 문제 2. 접근법1. 배열을 [n+1][m+1] 만큼 선언해준다.2. 배열에 값을 채운다.3. K개 값을 받는다.4. x1,y2 ~ x2,y2의 값을 구한다. 01231124281632 ex] (1,1) 부터 (2,3)까지 합을 구한다.for(int i = x1; i 3. 코드package week08;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Baek2167 { public static void main(String[] args) throws IOException { Buffered..
2024.05.24
no image
자바 [Algorithm] 누적합 - 백준 2851 슈퍼 마리오
1. 문제2. 접근법마리오는 받은 점수의 합을 최대한 100에 가깝게 만든다고 한다.하지만 100에 가까운 수가 2개라면 ex) 98, 102 마리오는 큰 값을 선택한다. 1. 반복문으로 1~10까지 sum에 점수를 더한다.2. if(sum > 100)이 되면3. 100 - (sum - mario[i]) 3. 코드package week08;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Baek2851 { public static void main(String[] args) throws IOException { BufferedReader buffered..
2024.05.24
no image
자바 [Algorithm] DP - 백준 11058 크리보드
1. 문제  2. 접근법알고리즘 순서1. N 값 받기2. 크리보드의 4가지 역할을 사용하여 1...n번 눌렀을 때 dp배열에 최대 값을 저장3. dp[N] 값 출력 경우의 수 확인N = 1A (1) N = 2AA (2) N = 3AAA (3) N = 4AAAA (4) N = 5AAAAA (5) N = 6AA(전체선택)(복사)(붙여넣기)(붙여넣기) : AAAAAA (6)AAA(전체선택)(복사)(붙여넣기) : AAAAAA (6)AAAAAA (6) N = 7A (전체선택)(복사)(붙)(붙)(붙)(붙) : AAAAA (5)AA (전체선택)(복사)(붙)(붙)(붙) : AAAAAAAA (8)AAA (전체선택)(복사)(붙)(붙) : AAAAAAAAA(9)AAAA (전체선택)(복사)(붙여넣기) : AAAAAAAAA(8..
2024.05.22
자바 [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
자바 [Programmers] 1단계 - 부족한 금액 계산하기 (Math.abs())
class Solution { public long solution(int price, int money, int count) { long answer = 0; long temp = 0; for (int i=1; i
2024.03.12