목록java (16)
발전하는 개발자가 되자
프로그래머스 알고리즘 (java) 라면 공장 프로그래머스 (라면 공장) 코드 리뷰 현재 공장에 남아있는 밀가루 수량 stock, 밀가루 공급 일정(dates)과 해당 시점에 공급 가능한 밀가루 수량(supplies), 원래 공장으로부터 공급받을 수 있는 시점 k가 주어질 때, 밀가루가 떨어지지 않고 공장을 운영하기 위해서 최소한 몇 번 해외 공장으로부터 밀가루를 공급받아야 하는지를 return 하도록 solution 함수를 완성하세요. 조건 stock에 있는 밀가루는 오늘(0일 이후)부터 사용됩니다. stock과 k는 2 이상 100,000 이하입니다. dates의 각 원소는 1 이상 k 이하입니다. supplies의 각 원소는 1 이상 1,000 이하입니다. dates와 supplies의 길이는 1 이..
프로그래머스 알고리즘 (java) 더 맵게 프로그래머스 (더 맵게) 코드 리뷰 배열중 값(스코빌 지수)이 가장 낮은 두개의 음식을 조건( a + b*2)에 맞춰 계산해 모든 배열의 값이 k 이상이 되게 만들어 섞은 횟수를 return 하는 문제 입니다. 조건 가장 작은 값 2개를 배열에서 뽑는다. 작은것과 두번째 작은것을 조건에 맞춰 계산한다. 계산한 값을 다시 배열에 반환한다. 배열의 값이 다 k보다 클 때 까지 반복한다. 풀이 방향 저는 가장 작은 값을 두개 뽑아야 하니 우선순위 큐를 사용하면 될것이라 생각했습니다. 생각대로 구현해보니 어렵지 않게 구현할 수 있었습니다. 우선순위 큐 를 사용할 줄 알면 쉽게 풀 문제였던거 같습니다. import java.util.PriorityQueue; class ..
프로그래머스 알고리즘 (java) 소수 찾기 프로그래머스 (소수 찾기) 코드 리뷰 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하는 문제입니다. 조건 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. ex) 013, 031, 3, 1, 10, ... 등 뽑을 수 있는 모든 경우가 가능 풀이 방향 저는 맨 처음 조합으로 풀면 될 것이다 생각했습니다. 그래서 조합을 구하는 제귀 메소드와 소수를 판별하는 메소드를 조합하면 될 것 이라 예상했습니다. 하지만 조합으로 풀면 순서를 생각 하지 ..
프로그래머스 알고리즘 (java) 전화번호 목록 프로그래머스 (전화번호 목록) 코드 리뷰 조건 String 배열의 요소가 다른 요소에 접두사면 false 아니면 true 접두사 확인은 String 의 startWith(string) 메소드를 활용 하면 쉽습니다. public boolean solution(String[] phone_book) { boolean answer = true; for (int i = 0; i 1) { return fals..
프로그래머스 알고리즘 (java) 베스트앨범 프로그래머스 (베스트앨범) 코드 리뷰 저는 먼저 음악으로 클래스를 나누고 장르로 그 클래스들을 감싸서 내림차순으로 정렬 시켰습니다. 객체를 두개로 나누고 override 메소드까지 구현하니 조금 코드 길이가 길어진거 같습니다. import java.util.*; public class BestAlbum { public int[] solution(String[] genres, int[] plays) { int[] answer = {}; List answerList = new ArrayList(); List genresList = new ArrayList(); for (int i = 0; i < genres.length; i++) { if (!genresList...
프로그래머스 알고리즘 (java) 위장 프로그래머스 (위장) 내가 작성한 코드 set 으로 카탈로그를 뽑아내고 카탈로그별 숫자를 구해 각각 곱해줘 경우의 수를 구했다. set을 안쓰고 리스트를 써도 될 것 같다. public class Camouflage { public int solution(String[][] clothes) { int answer = 1; Set category = new HashSet(); for (String[] clothe : clothes) { //카태고리가 없으면 카태고리 생성 if (!category.contains(new Category(clothe[1]))) { category.add(new Category(clothe[1])); } else { // 있으면 그 카태고..
프로그래머스 알고리즘 (java) 가장 큰 수 프로그레머스 가장 큰 수 내가 작성한 코드 문자열로 변환하고 sort 해서 다 더해 출력함 다른 사람들도 비슷한 방식으로 푼거 같다. public String solution(int[] numbers) { String answer = ""; List stringList = new ArrayList(); for (int anInt : numbers) { stringList.add(String.valueOf(anInt)); } stringList.sort(((o1, o2) -> (o2 + o1).compareTo(o1 + o2))); for (String s : stringList) { answer += s; } return answer.charAt(0) == ..
jpa,orm 에 대해 알아보자 jpa 와 orm 이란 entity 와 데이터베이스 맵핑 방법 영속성 jpa 와 orm jpa 와 orm에 대해 맛보기로 알아보자. JPA란 무엇인가? Java Persistence API 자바진영의 ORM 기술 표준이다. Hibernate, EclipesLink, dataNucleus ORM이란 무엇인가? Object-Relational Mapping ORM이란 객체와 DB의 테이블이 매핑을 이루는 것을 말합니다. 객체를 데이터베이스에 저장할 때 INSERT SQL 을 직접 작성하는게 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM프레임워크에 저장하면 된다. JPA 사용하면 장점 생산성 유지보수 패러다임의 불일치 해결 성능 jpa 를 사용하는 이유 객체 모델과 관계형..