분류 전체보기 48

프로그래머스 택배 상자 꺼내기 [JAVA]

https://school.programmers.co.kr/learn/courses/30/lessons/389478 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1 ~ n의 번호가 있는 택배 상자가 창고에 있습니다. 당신은 택배 상자들을 다음과 같이 정리했습니다. 왼쪽에서 오른쪽으로 가면서 1번 상자부터 번호 순서대로 택배 상자를 한 개씩 놓습니다. 가로로 택배 상자를 w개 놓았다면 이번에는 오른쪽에서 왼쪽으로 가면서 그 위층에 택배 상자를 한 개씩 놓습니다. 그 층에 상자를 w개 놓아 가장 왼쪽으로 돌아왔다면 또다시 왼쪽에서 오른쪽으로 가면서 그 위층에 상자를 놓습니다. 이러한 방식으로 n개의 택배 상자를..

알고리즘 2025.07.21

[JAVA] Thread

프로세스- 실행 중인 프로그램의 인스턴스이다.- 각 프로세스는 독립적인 메모리 공간을 가지며, 운영체제에서 독립된 실행 단위로 취급된다. 스레드- 프로세스 내에서 실행되는 작은 단위- 여러 스레드는 하나의 프로세스 내에서 자원을 공유- 프로세스의 코드, 데이터, 시스템 자원등을 공유- 실제로 CPU에 의해 실행되는 단위는 스레드 start()새로운 스레드를 생성해서 run() 실행비동기 실행✅ 새로운 스레드 생성run()일반 메서드처럼 호출동기 실행 (main 스레드에서 실행)❌ 새로운 스레드 X start()는 내부적으로 native 메서드를 통해 운영체제 수준에서 새로운 스레드를 생성이후 run()을 자동으로 호출함 사용자 스레드 - 프로그램의 주요 작업 수행 - 작업이 완료될 때까지 실행 -..

JAVA 2025.07.16

[JAVA] HashMap

HashMap 이란?HashMap은 Map 인터페이스를 구현하고 있는 대표적인 클래스 입니다.Map의 구조인 key-value 쌍으로 구성 되어 있는게 특징입니다. HashMap의 사용 이유- 탐색 속도가 빠르다 (평균 O(1)) - key를 기준으로 데이터를 매우 빠르게 조회할 수 있습니다. - 내부적으로 배열+해시 함수를 사용해 위치를 계산하기 때문에 성능이 뛰어납니다. - 대량의 데이터를 다룰 때, 순차 탐색보다 훨씬 빠릅니다.- Key-Value 구조로 데이터 저장 - 하나의 key에 하나의 value를 매핑합니다. - 중복된 key를 넣으면 이전 value를 덮어쓰기 합니다.- 중복 없는 key 관리 - 같은 key를 두 번 넣으면 마지막 value로 덮어쓰게 되므로 자연스럽게 중복 제..

JAVA 2025.07.16

[JAVA] Hash

Hash란?해시(Hash)는 데이터를 고정된 크기의 고유한 값(숫자)으로 변환하는 함수 또는 그 결과 값을 의미합니다.이때 사용되는 함수는 해시 함수(Hash Function)라고 부릅니다. 해시 함수의 특징Deterministic같은 입력이면 항상 같은 출력Fast계산이 빠르다Uniformity해시값이 고르게 분포되면 성능이 좋다Collision 가능성 존재서로 다른 입력값이 같은 해시값을 가질 수 있음One-way (암호학적 해시)입력값을 추정하기 어렵게 설계됨 (SHA-256 등) 해시의 사용처해시 테이블 구현 (HashMap, HashSet, Hashtable)암호학 (비밀번호 저장 시 해싱: SHA-256, bcrypt)데이터 무결성 검증 (파일 해시: MD5, SHA)캐시 키 생성블록체인 (블..

JAVA 2025.07.16

[JAVA] List vs Set

List : 리스트는 요소들의 순차적인 컬렉션이다. 순서를 가지며 같은 요소가 여러번 들어 갈 수 있다.특징 - 순서 유지 : 리스트에 추가된 요소는 특정한 순서를 유지 한다. - 중복 허용 : 리스트는 동일한 값이나 객체의 중복을 허용 한다. - 인덱스 접근 : 리스트의 각 요소는 인덱스를 통해 접근 가능 하다. Set : 유일한 값의 요소들의 컬렉션이다.특징 - 유일성 : 셋에는 중복된 요소가 존재하지 않는다. - 순서 미보장 : 요소들의 순서를 보장하지 않는다. 즉 입력 순서대로 출력 순서를 보장하지 않는다. - 빠른 검색 : 셋은 요소의 유무를 빠르게 확인할 수 있도록 최적화 되어 있다.

JAVA 2025.07.16

[JAVA] ArrayList 란?

ArrayList란?ArrayList는 배열을 기반으로 한 컬렉션의 하나이며, 데이터를 추가, 삭제시 내부에서 동적으로 배열의 길이를 조절해준다.ArrayList 특징ArrayList는 내부적으로 연속된 주소를 가진 배열을 이용하는 컬렉션연속적인 데이터 리스트이다.ArrayList 클래스는 내부적으로 Object[] 배열을 이용해 요소를 저장한다.배열을 이용하기 때문에 인덱스를 이용해 요소에 빠르게 접근할 수 있다.크기가 고정되어있는 배열과 달리 데이터의 크기에 따라 공간을 늘리거나 줄인다.그러나 배열 공간이 꽉찰 때마다 배열을 복사하는 방식과 사이즈를 늘리며 증가하는데, 이때마다 지연이 된다.데이터를 리스트 중간에 삽입/삭제하는 경우에 중간에 빈 공간이 생기지 않도록 요소들의 위치를 앞뒤로 이동시키기때..

JAVA 2025.07.16

백준 - 17836 공주님을 구해라! 자바

1.Scanner : 436ms import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class Main { static int N,M,T,knightX,knightY,min = Integer.MAX_VALUE,mid; //mid (1+2) 1.검을 찾을때까지의 거리 +2.검을 찾고 벽을 허물면서 가는 거리 static int[][] Nary; static boolean[][] visited; static int[][] dist; static int[][] dir = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}}; public static void input() ..

알고리즘 2025.07.15