자바

Java

[Java] 스트림(Stream)(2)

1. 동시성과 병렬성 1) 동시성이란 하나의 코어(CPU)에서 여러 쓰레드가 번갈아 가며 작업을 실행하는 것을 말한다. 한 시점에 하나의 작업만 실행한다. 하지만 처리속도나 번갈아 작업하는 것이 워낙 빠르기 때문에 동시에 처리되는 것처럼 보이는 것이다. 2) 병렬성이란 멀티 코어를 각각 이용하여 병렬로 작업을 실행하는 것을 말한다. 한 시점에 여러개의 작업을 동시에 실행하기 때문에 동시성보다는 작업효율이 좋다. a. 데이터 병렬성 전체 데이터를 분할하여 서브 데이터로 만들고, 이 서브 데이터를 병렬로 처리하는 것을 말한다.(자바 스트림이 데이터 병렬성을 구현한 것) b. 작업 병렬성 서로 다른 작업을 병렬 처리하는 것을 말한다.(클라이언트의 요청을 각각 다른 쓰레드에서 별도로 처리하는 서버 프로그램) 2..

ps

[프로그래머스][lv1] 푸드 파이트 대회

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제] 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아..

ps

[백준][골드][벨만포드] 11657 타임머신

[문제] N개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 버스가 M개 있다. 각 버스는 A, B, C로 나타낼 수 있는데, A는 시작도시, B는 도착도시, C는 버스를 타고 이동하는데 걸리는 시간이다. 시간 C가 양수가 아닌 경우가 있다. C = 0인 경우는 순간 이동을 하는 경우, C < 0인 경우는 타임머신으로 시간을 되돌아가는 경우이다. 1번 도시에서 출발해서 나머지 도시로 가는 가장 빠른 시간을 구하는 프로그램을 작성하시오. [입력] 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 ..

algorithm

[알고리즘] 벨만-포드(bellman-ford-moore)

1. 벨만-포드 알고리즘이란 그래프에서 최단 거리를 구하는 알고리즘 2. 특징 음수 가중치 에지가 있어도 로직이 수행이 가능하다. 전체 그래프에서 음수 사이클의 존재 여부를 판단할 수 있다. 3. 알고리즘 로직 1) 주어진 데이터를 Edge리스트로 그래프로 구현한 후, 거리 배열의 값을 업데이트한다. Edge를 중심으로 동작하기 때문에 그래프를 Edge리스트로 구현한다. 최단 경로 배열은 출발노드는 0, 나머지는 무한대(99,999,999 혹은 INF)로 초기화한다. 출발 노드가 방문한 적 없는 노드일 때는 값을 업데이트 하지 않는다. if(출발 노드의 거리 배열의 값 + Edge 가중치

Java

[Java] 스트림(Stream)(1)

1. 스트림이란 컬렉션 및 배열의 요소를 표준화된 방법으로 반복 처리하기 위해서 자바 8부터 제공하는 기능이다. 기존에는 for문, for-each문 또는 Iterator객체를 얻어 사용하였다면, 지금부터는 Stream객체를 얻어 좀 더 효율적으로 사용할 수 있다. import java.util.*; import java.util.stream.*; public class StreamEx { public static void main(String[] args) { List list = new ArrayList(); for (int i = 1; i System.out.print(i + " ")); } } 2. 스트림의 특징 1) 속도가 빠르고 병렬처리에 효율적이다. for문, for-each문보다 속도가 빠..

ps

[백준][골드][다익스트라] - 1753 최단경로

[문제] 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다. [입력] 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10 이하의 자연수이다. 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의한다...

algorithm

[알고리즘] 다익스트라(Dijkstra)

1. 다익스트라(Dijkstra)란 그래프에서 최단거리를 구하는 알고리즘이다. 모든 간 양수이어야 한다. 출발 노드와 도착 노드간의 최단거리를 구하는 것이 아니라 출발 노드와 나머지 노드간의 최단 거리를 표현하는 것. 2. 알고리즘 로직 다익스트라는 단일 출발 문제에 해당한다. 다익스트라 알고리즘은 BFS와 유사하다. 1) 주어진 데이터를 그래프로 구현하기 시간 복잡도를 고려하여 인접 행렬보다는 인접 리스트로 구현하는 것이 좋다. 인접 리스트에 연결된 배열은 (노드, 가중치)와 같은 형태로 구현을 한다. 2) 최단 거리 배열 초기화하기 최단 거리 배열을 생성하고, 출발 노드는 0, 나머지는 무한(99,999,999, "INF"라고 표현)으로 초기화한다. 우선 순위 큐에 출발 노드와 거리를 먼저 넣는다. ..

Java

[Java] 람다식(Lambda)

1. 람다식이란 자바 8부터 지원하는 기능으로 함수형 프로그래밍을 뜻하며, 함수를 정의하고, 함수를 데이터 처리부로 보내서 데이터를 처리하는 기법을 말한다. 쉽게 말해서 함수(자바에서는 메서드)를 간단한 식으로 표현하는 방법으로, 익명 함수라고도 한다. 2. 람다식의 형태 (매개변수) -> { 처리 내용} 3. 메서드로부터 람다식을 만드는 방법 메서드의 리턴 타입과 이름을 지우고 매개변수와 구현부 사이에 화살표를 넣어주면 된다. 간단한 예 // 메서드 사용 public int max(int a , int b){ return a > b ? a : b; } // 접근제어자, 리턴 타입, 메서드 명을 지우고 매개변수와 구현부 사이에 화살표를 넣어준다. // 람다식 사용 (a, b) -> { a > b ? a ..

github.com/hyunbenny/study
'자바' 태그의 글 목록 (3 Page)