분류 전체보기 2406

[아이템 80] 쓰레드보다는 실행자, 태스크, 스트림을 애용하라

실행자 프레임워크(Executor Framework) java.util.concurrent 패키지는 실행자 프레임워크(Executor Framework)라고 하는 인터페이스 기반의 유연한 태스크 실행 기능을 담고 있습니다. 과거에는 단순한 작업 큐(work queue)를 만들기 위해 수많은 코드를 작성했어야 했지만, 이제는 다음과 같이 간단하게 작업 큐를 생성할 수 있습니다. 1. 실행자 서비스(ExecutorService) 주요 기능 코드 부연 설명 get 메서드: 특정 태스크가 완료되기를 기다림 invokeAny 메서드: 태스크 모음 중 아무것 하나가 완료되기를 기다림 invokeAll 메서드: 모든 태스크가 완료되기를 기다림 awaitTermination 메서드: 실행자 서비스가 종료하기를 기다림 ..

JAVA/Effective Java 2024.04.07

[아이템 79] 과도한 동기화는 피하라

과도한 동기화는 다음과 같은 부작용을 초래합니다. 성능을 떨어뜨리고 Deadlock 상태에 빠드리고 심지어 예측할 수 없는 동작을 낳을 수 있음 응답 불가와 안전 실패를 피하려면 동기화 메서드나 동기화 블록 내 제어를 절대로 클라이언트에 양도하면 안 됩니다. 동기화된 클래스 관점에서, 다음과 같은 메서드들은 "외계인 메서드(alien method)"로 알려져 있는데, 이는 이러한 메서드들이 어떤 동작을 수행할지 확신할 수 없으며, 예외를 발생시키거나, 데드락 상태에 빠뜨리거나, 데이터를 손상시킬 수 있기 때문입니다. 동기화된 코드 블록 내 재정의 가능한 메서드 클라이언트가 전달한 함수 객체 외계인 메서드(Alien Method) 코드 부연 설명 관찰자들은 addObserver()와 removeObserv..

JAVA/Effective Java 2024.04.07

백준 2109번 순회강연

문제 링크입니다: https://www.acmicpc.net/problem/2109 2109번: 순회강연 한 저명한 학자에게 n(0 ≤ n ≤ 10,000)개의 대학에서 강연 요청을 해 왔다. 각 대학에서는 d(1 ≤ d ≤ 10,000)일 안에 와서 강연을 해 주면 p(1 ≤ p ≤ 10,000)만큼의 강연료를 지불하겠다고 알려왔다. www.acmicpc.net 문제의 핵심은 정확히 d일에 강연을 하는 것이 아니라 d일 안에 강연을 하는 것이었습니다. 알고리즘은 아래와 같습니다. 1. 주어진 p와 d를 d를 기준으로 오름차순으로 정렬합니다. 2. 최소힙을 생성하고 정렬된 순서대로 p를 힙에 넣어줍니다. 2.1 단, 힙의 크기가 넣어준 p의 쌍인 d를 초과할 경우, 힙 내에서 가장 작은 p값인 pq.to..

알고리즘/BOJ 2024.04.06

[Programmers] 특정 형질을 가지는 대장균 찾기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/301646 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr MySQL을 이용하여 풀었습니다. 비트 연산을 이용하면 쉽게 풀 수 있는 문제였습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 부모의 형질을 모두 가지는 대장균 찾기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/301647 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr MySQL을 이용해 풀었습니다. 비트 연산을 통해 풀어야 하는 문제였습니다. [자식의 개체 형질] & [부모의 개체 형질] = [부모의 개체 형질]이어야 조건 성립 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 대장균의 크기에 따라 분류하기 2

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/301649 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr MySQL을 이용하여 풀었습니다. 대장균의 크기 그룹을 NTILE 문법을 이용해 분류하고 분류한 결과를 토대로 COLONY_NAME을 부여했습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 특정 세대의 대장균 찾기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/301650 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 멸종위기의 대장균 찾기 문제와 같이 재귀 쿼리를 이용해 각 대장균의 세대를 정의한 테이블(ECOLI_GENERATIONS)을 정의 후 3세대에 포함된 ID들을 출력하는 문제였습니다. MySQL을 이용하여 풀었습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~ 멸종기의 대장균 찾기

[Programmers] 멸종위기의 대장균 찾기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/301651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr MySQL을 이용하여 풀었습니다. 재귀 쿼리를 이용해 각 대장균의 세대를 정의한 테이블(ECOLI_GENERATIONS)을 정의합니다. 이후 세대 별로 타 대장균들의 부모가 아닌 대장균들을 출력합니다. ECOLI_GENERATIONS를 정의한 쿼리는 아래와 같습니다. 전체 코드는 다음과 같습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨..

[Programmers] Python 개발자 찾기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/276013 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 간단한 SELECT문 작성 문제였습니다. MySQL을 이용하여 풀었습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~ 반응형

백준 2170번 선 긋기

문제 링크입니다: https://www.acmicpc.net/problem/2170 2170번: 선 긋기 첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. www.acmicpc.net x와 y 값이 최대 10억이기 때문에 boolean 배열을 선언한 뒤 마킹하는 식으로 풀 수 없는 문제였습니다. 이에 따라 {x, y} 쌍을 저장하는 벡터를 선언하고 오름차순으로 정렬한 뒤 라인 스위핑 기법으로 푸는 문제였습니다. 현재 구간의 y보다 다음 구간의 x가 더 클 경우 현재 [x, y) 길이를 더함 현재 구간의 y가 다음 구간의 x와 y..

알고리즘/BOJ 2024.04.03