340211. 충돌위험 찾기
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/169199제한사항풀이import java.util.*;class Solution { public int solution(int[][] points, int[][] routes) { int answer = 0; int[][] pointMap = new int[101][101]; int n = routes.length; // 로봇들의 경로 집합 List> paths = new ArrayList(); // 경로 추적 for(int[] route : routes) { ..
169199. 리코챗 로봇
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr제한사항풀이import java.util.*;class Solution { public int solution(String[] board) { int answer = 0; int n = board.length; int m = board[0].length(); char[][] boardMap = new char[n][m]; int[] start= ..
118667. 두 큐 합 같게 만들기
·
Algorithm/Algorithm
문제https://school.programmers.co.kr/learn/courses/30/lessons/118667제한사항풀이import java.util.*;class Solution { public int solution(int[] queue1, int[] queue2) { Queue q1 = new LinkedList(); Queue q2 = new LinkedList(); long q1Sum = 0; long q2Sum = 0; int n = queue1.length; int job = 0; for(int i = 0; i q2Sum) { int head = q1.poll();..
388353. 지게차와 크레인
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/388353제한사항풀이1. 창고 맵을 초기화한다. 외부를 구분하기 위해 기존 창고 겉에 외부 빈공간을 구분할 수 있는 배열을 추가한다.1.1 외부 빈공간은 '0', 내부 빈공간은 '1'로 설정했다.2. 크레인, 지게차 로직 구현한다. 2.1 크레인, 지게차가 컨테이너를 제거하면 외부 빈 공간('0')이 생길 수 있다. 그 빈 공간이 내부 빈 공간에 영향을 주는지 확인한다. 외부 빈 공간이 생기면서 주변 내부 빈 공간('1')이 외부 빈 공간('0')이 될 수 있다.import java.util.*;class Solution { public int solution(String[] storage,..
258711. 도넛과 막대 그래프
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/258711 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr제한사항풀이1. indegree, outdegree 맵을 초기화한다.2. 각 그래프 패턴을 특정하는 노드는 확인 후 그래프 패턴 개수를 더한다.3. 더 중요한 핵심은 그래프 패턴을 특정하는 노드 외에는 그냥 넘길 수 있다는 것을 눈치채는 것이라 생각한다.import java.util.*;class Solution { public int[] solution(int[][] edges) { int[] answer = {}; ..
150368. 이모티콘 할인행사
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/150368제한사항풀이1. DFS를 사용하여 모든 할인율 조합 생성2. 각 할인 조합에 대해 사용자 구매 시뮬레이션3. 최적의 결과 저장class Solution { static int maxSubscriberCount = 0; static int maxCost = 0; public int[] solution(int[][] users, int[] emoticons) { int[] answer = {}; int[] discountRates = {10, 20, 30, 40}; int[] discountCombination = new int[emoti..
자바 4주차: 동시성 프로그래밍 기초(작성 중)
·
외부활동/JSCODE 자바
Thread-Safe멀티 스레드 환경에서 공유 자원에 여러 스레드가 접근이 이루어져도 프로그램이 정상적으로 동작하는 상태synchronizedsynchronized란?lock을 통해 동기화를 수행하여 원자성 문제를 해결하는 키워드문제점한 스레드가 lock을 얻어서 임계 영역에 접근하면 해당 영역에 접근하고 싶은 모든 스레드가 blocking이 걸려 아무 일도 못하며 스레드 상태를 변경하는 비용때문에 성능이 좋지 않다.성능 저하(락 대기)데드 락공정성 문제 -> 기아 상태(starvation)동기화 매커니즘모니터 락을 사용하여 스레드 간 동기화 제공객체의 락은 한번에 하나의 스레드가 점유임계 영역(Critical Section)멀티스레드 환경에서 공유 자원에 접근하는 코드 블록모니터모니터는 스레드가 mut..
자바 3주차: 컬렉션 기초(작성 중)
·
외부활동/JSCODE 자바
JCFJava Colleciion Framework프레임워크?표준화된 클래스와 인터페이스의 집합 -> 통일된 API 제공통일된 API?- 데이터를 다루기 위한 버튼- 동일 인터페이스에 구현체가 달라도 add(), remove() 같은 이름으로 같은 방식으로 동작배경?자주 쓰이는 데이터 저장 방식을 표준화된 설계도를 만들자.한마디로 JCF는?다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합 JCF 계층구조JCF는 Collection, Map 인터페이스Collection은 다시 List, Queue, Set 인터페이스List 인터페이스- 순서가 있는 데이터 집합(데이터 중복 허용)-  List 구현체는 ArrayList, LinkedList, Vector  ArrayLi..
Layered Architecture
·
Programming
Layered ArchitectureLayered Architecture는 각 구성 요소들이 '관심사의 분리(Separation of Concerns)'를 달성하기 위해 '책임'을 가진 계층으로 분리한 아키텍처이다. 하나의 계층에 관심사가 여러 개가 존재한다면 해당 계층의 응집도가 떨어지고 결합도가 높아진다. 관심사의 분리를 통해 재사용성과 유지보수성을 높일 수 있다.구성Presentation사용자의 요청을 받고 해석해서 Application 영역에 전달하거나 처리 결과를 받아서 사용자가 이해할 수 있는 형식으로 변환해서 응답Application사용자에게 제공해야 할 기능을 구현이 기능들을 구현하기 위해 도메인 영역의 도메인 모델을 사용한다.즉, 도메인 모델에 로직 수행을 위임한다.Domain핵심 로직..
자바 2주차: (작성 중)
·
외부활동/JSCODE 자바
String literal과 new String(””)의 차이String literal- String Constant Pool에 저장- 동일한 문자열 리터럴이 여러 번 사용되더라도, Java는 메모리 절약을 위해 동일한 참조를 재사용합니다.new String("")- Heap에 저장- Heap에 새로운 객체를 만들고, 기존 String Constant Pool에 동일한 문자열이 존재하더라도 무시하고 별도의 객체를 만듭니다.- GC의 메모리 회수 대상String Contant Pool?Java의 String Constant Pool은 JVM이 관리하는 특별한 메모리 영역입니다. 이곳에 저장된 문자열 리터럴은 JVM 종료 시까지 유지되거나, 클래스가 언로드될 때만 제거됩니다. 즉, String Pool에 저..