전체 글 96

[Java] 배열 총정리

1. 배열이란?같은 타입의 데이터를 연속된 공간에 저장하는 자료구조 2. 배열 특징 - 한 번 생성하면 길이 변경 불가하다. 늘리려면 새 배열 만들어야 함 - length는 메서드가 아닌 필드이다.arr.length // Oarr.length() // X 3. 기본값배열은 생성하면 자동으로 값이 채워진다.타입기본값int0double0.0booleanfalsechar' \ u0000'String / 객체null 4. 배열 선언 방법int[] arr1;int arr2[]; 5. 배열 생성 + 초기화 int[] arr = new int[3]; // [0,0,0]int[] arr2 = {1, 2, 3}; // 바로 초기화​ 6. 배열 복사 int[] 새 배열명 = A..

코테 스터디 4주차

Do it! 알고리즘 코딩 테스트: 자바 편 | 김종관 - 교보문고Do it! 알고리즘 코딩 테스트: 자바 편 | IT 기업 취업과 이직의 필수 단계인 알고리즘 코딩 테스트! 출제 경향을 완벽하게 반영한 핵심 100제로 한 번에 합격한다!코딩 테스트는 어떻게 준비해야 할product.kyobobook.co.kr 3/9(월) ~ 3/13(금) 진도 : p.335 ~ 449 이번주에는 다양한 알고리즘을 학습했다. 그 중 가장 오랜 시간 투자하여 공부한건 다익스트라와 벨만포드 알고리즘이었다두 알고리즘의 차이점은 음수 가중치의 가능 여부다. 다익스트라 알고리즘그래프에서 한 정점에서 다른 모든 정점까지의 최단 거리를 구하는 알고리즘양수 가중치에서 빠르게 동작 벨만-포드 알고리즘그래프에서 한 정점에서 다른 모든 정..

[Java] 백준 11657 타임머신 (벨만-포드)

https://www.acmicpc.net/problem/11657 음수 가중치가 있는 그래프에서 1번 도시부터 모든 도시까지의 최단 시간을 구하되, 음수 사이클이 존재하면 -1을 출력하는 문제풀이 계획이 문제는 간선의 가중치가 음수가 될 수 있기 때문에 일반적인 다익스트라 알고리즘이 아니라 벨만-포드 알고리즘을 사용해야 한다. 1. 먼저 1번 도시를 시작점으로 설정하고, 모든 간선을 N-1번 반복하며 최단 거리를 갱신한다. 2. 이후 한 번 더 간선을 순회했을 때 값이 갱신 → 음수 사이클이 존재 → -1을 출력 3. 음수 사이클이 없다면 → 2번 도시부터 N번 도시까지의 최단 거리를 출력 4. 만약 도달할 수 없는 경우에는 -1을 출력 import java.io.*;imp..

카테고리 없음 2026.03.20

코테 스터디 3주차

Do it! 알고리즘 코딩 테스트: 자바 편 | 김종관 - 교보문고Do it! 알고리즘 코딩 테스트: 자바 편 | IT 기업 취업과 이직의 필수 단계인 알고리즘 코딩 테스트! 출제 경향을 완벽하게 반영한 핵심 100제로 한 번에 합격한다!코딩 테스트는 어떻게 준비해야 할product.kyobobook.co.kr 3/9(월) ~ 3/13(금) 진도 : p.233 ~ 334Ch 7 그리디 [Java] 백준 1715 카드 정렬하기 (그리디 / 우선순위 큐)https://www.acmicpc.net/problem/1715 카드 묶음을 두 개씩 합치면서 전체 비교 횟수를 최소로 만드는 문제이다. 항상 가장 작은 두 개를 먼저 합친다 는 선택이 매 단계에서 최적이고, 전체 최적해로 이어entwicklerin.tis..

[Java] 백준 1931 회의실 배정 (그리디)

https://www.acmicpc.net/problem/1931 전형적인 그리디 문제이다.가장 빨리 끝나는 회의를 선택하면 뒤에 남는 시간이 가장 많아진다.즉, 앞으로 선택할 수 있는 회의를 최대한 많이 남길 수 있다는 것이다. 1. 종료 시간 순으로 정렬2. 만약 종료 시간이 같다면, 시작 시간이 빠른 순으로 정렬 정렬 기준이 2가지이기 때문에 람다식으로 정렬할 것이다. import java.util.Scanner;import java.util.Arrays;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); ..

[Java] 백준 1744 수를 묶어서 최대값 만들기 (우선순위 큐)

Queue 변수 = new Queue()정렬 없음 (FIFO)PriorityQueue 변수 = new PriorityQueue()오름차순 (디폴트값) PriorityQueue 변수 = new PriorityQueue(Collections.reverseOrder())내림차순 https://www.acmicpc.net/problem/1744 풀이 계획 입력값을 4가지로 분류 -> (2 이상의) 양수, 1, 0, 음수 (1) (2 이상의) 양수 = 최댓값끼리 먼저 곱하기, 만약 홀수개라면 그대로 더하기 (2) 1 = 그대로 더하기 (3) 음수 = 최솟값끼리 먼저 곱하기, 만약 홀수개라면 0이 있는지 확인 후 있다면 곱하기 (4) 0 = 0은 더해도 안 하는 것과 같으니 음수의 갯수 판별에..

[Java] 백준 1715 카드 정렬하기 (그리디 / 우선순위 큐)

https://www.acmicpc.net/problem/1715 카드 묶음을 두 개씩 합치면서 전체 비교 횟수를 최소로 만드는 문제이다. 항상 가장 작은 두 개를 먼저 합친다 는 선택이 매 단계에서 최적이고, 전체 최적해로 이어진다. 즉, 그리디 문제이다. 왜냐하면 큰 수를 먼저 합치면, 그 큰 값이 이후 계산에 계속 더해져 손해가 커지기 때문이다. 이 그리디 문제를 정렬로 풀게 된다면 O(N log N)을 N번 해야 한다 → O(N² log N) 우선순위 큐 반면 우선순위 큐(최소 힙)는 최소값을 꺼내는 연산과 값을 삽입하는 연산이 모두 O(log N)에 가능하다.따라서 이 과정을 N번 반복해도 전체 시간복잡도는 O(N log N)으로 유지된다. 402010→ 10과 20을 꺼내어 더한다. 4030..

코테 스터디 2주차

Do it! 알고리즘 코딩 테스트: 자바 편 | 김종관 - 교보문고Do it! 알고리즘 코딩 테스트: 자바 편 | IT 기업 취업과 이직의 필수 단계인 알고리즘 코딩 테스트! 출제 경향을 완벽하게 반영한 핵심 100제로 한 번에 합격한다!코딩 테스트는 어떻게 준비해야 할product.kyobobook.co.kr 3/2(월) ~ 3/6(금) 진도 : p.132 ~ 231 정렬 부분은 대학 알고리즘 수업에서 자주 다뤘던 내용이라서 복습하는 느낌으로 금방 넘어갔다. 이진탐색 또한 공부했었던 내용이었으나, 어떤 문제에서 이진탐색을 사용해야하는지는 새롭게 알게 되었기 때문에 글로 정리하였다. [Java] 백준 2343 블루레이 만들기 (이진탐색)1️⃣ 이진탐색이란- 정렬된 구간 / 단조성을 가지는 구간 에서 ..

[Java] 소수 판별

boolean[] IsPrime = new boolean[n + 1];for (int i = 2; i 가정1~n 까지 숫자 중 소수를 찾아라 IsPrime해당 숫자가 소수인지 아닌지 알 수 있는 배열True -> 소수이다False -> 소수가 아니다기본값은 True for문시작 범위 : 1은 굳이 볼 필요없다 -> 2부터 시작끝 범위 : √n 까지 보면 된다 -> n이 합성수라면 반드시 √n 이하의 약수를 하나는 가지기 때문에 √n 까지 봐도 된다if문 : i가 소수가 아니면 아래 로직을 실행하지 말고 다음 i로 넘어가라 이중 for문 (i가 소수일 때 실행)현재 숫자 i가 소수라면, i의 배수들을 모두 소수가 아니므로 false 로 변경