목록분류 전체보기 (26)
발전하는 개발자가 되자
equals 와 == 차이 면접을 보다 equals 와 == 의 차이를 설명해달라는 질문을 들었다. 정말 쉬운 질문 하지만 나는 면접에서 대답을 하지 못했다. 왜 그럴까? 고민을 해보니 머리로는 이해 했지만 머리속의 내용을 풀어 말로 표현 하려니 정리가 안되서 그랬던거 같다. equals() 와 == 는 무슨 차이가 있을까? == 는 객체의 주소값을 비교하게 된다. 그래서 같은 값이라도 주소값이 다르게 되면 다르다고 나온다. 따라서 == 은 int 와 같은 Primitive Type 을 비교할 때 사용한다. equals() 는 개발자가 정의한 논리적인 비교를 하게 된다. import org.junit.Test; import java.util.Objects; import static org.assertj...
프로그래머스 알고리즘 (java) H-index 프로그래머스 (H-index) 코드 리뷰 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주는 문제 입니다. 조건 논문수 = 배열의크기 n 인용 횟수 h 인용횟수가 h 인 논문의 수가 h 이면 통과 반복 횟수 k 풀이 방향 가정 -1 작은수로 정렬 작은수를 기준으로 h 를 선정 k = 배열의 크기 - 기준인 h 의 인덱스 k = h 일 때 까지 반복 가정 -1 문제 h가 바로 통과 함 그럼 내림차순으로 정렬하고 해보자 가정-2 큰수로 정렬 큰수를 기준으로 h 를 선정 k = 배열의 크기 - 기준인 h 의 ..
프로그래머스 알고리즘 (java) 이중 우선순위 큐 프로그래머스 (이중 우선순위 큐) 코드 리뷰 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 조건 명령어 높이 I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 풀이 방향 string 배열을 split 하였습니다. 우선순위큐를 2개 만들어 오름차순 내림차순으로 초기화 시켜 사용했습니다. split한 String의 [0] 으로 조건을 구분해 동작 시켰습니다. ..
프로그래머스 알고리즘 (java) 디스크 컨트롤러 프로그래머스 (디스크 컨트롤러) 코드 리뷰 각 작업에 대해 [작업이 요청되는 시점, 작업의 소요시간]을 담은 2차원 배열 jobs가 매개변수로 주어질 때, 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면 평균이 얼마가 되는지 return 하도록 solution 함수를 작성해주세요. (단, 소수점 이하의 수는 버립니다) 요청이 그림과 같이 들어온다면 두가지 경우의 수가 있습니다. A → B → C A → B → C 이 때 각 작업의 요청부터 종료까지 걸린 시간의 평균은 10ms(= (3 + 11 + 16) / 3)가 됩니다. A → C → B A → C → B의 순서로 처리하면 각 작업의 요청부터 종료까지 걸린 시간의 평균은 9m..
프로그래머스 알고리즘 (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..