반응형
SMALL

JAVA 56

[프로그래머스/java] 최솟값 만들기

https://programmers.co.kr/learn/courses/30/lessons/12941 코딩테스트 연습 - 최솟값 만들기 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱 programmers.co.kr 각 배열의 숫자 하나씩 뽑아서 곱한 후 다 더한 값이 최소가 되게 만들려면 하나의 배열에서 제일 작은 값 + 하나의 배열에서 제일 큰 값 이어야 하므로 각 배열을 하나는 오름차순, 하나는 내림차순 처리 해준 뒤 곱한다. import java.util.*; class Solution { public int solution(int []A, in..

JAVA/Algorithm 2021.01.07

[프로그래머스/java] 숫자의 표현 (완전탐색)

https://programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr 연속된 자연수의 합이 n이 되는 경우를 찾는 문제 '연속된' 이므로 반복문을 돌려 1씩 증가하는 숫자를 더해나가는 방식 1부터 더해나가고 n 자신이 답이 될 수 있으므로 n을 포함하는 범위 class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i

JAVA/Algorithm 2021.01.05

[프로그래머스/java] 올바른 괄호 (stack 사용 유무)

https://programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 (())() 는 올바른 괄호입니다. )()( 또는 (()( 는 올바르지 않은 괄호 programmers.co.kr 스택 사용 코드 시간과 효율성 모두 더 오래 걸림 import java.util.*; class Solution { boolean solution(String s) { boolean answer = false; Stack stack = new Stack(); // '()' 같은 문자이므로 Character for(int i =..

JAVA/Algorithm 2021.01.03

[프로그래머스/java] 다음 큰 숫자 (2진수의 1개수 세기 - bitCount())

https://programmers.co.kr/learn/courses/30/lessons/12911 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr 2진수 n보다 큰 숫자 중 1의 개수가 같은 최소 2진수 구하기 n을 계속 증가시키면서 1의 개수가 같아질 때 값 반환 Integer.bitCount(n); 2진수의 1 개수 세주는 함수 class Solution { public int solution(int n) { int nBitCount = Integer.bitCount(n..

JAVA/Algorithm 2021.01.03

[프로그래머스/java] 구명보트

https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 무게 제한이 있는 보트에 최대 2명씩 태워 보낼 수 있을 때 모든 사람을 태워보낼 수 있는 최소 횟수 구하기 사람들의 몸무게를 오름차순 정렬한 뒤 (최소 무게 + 최대 무게)로 판단하기 주석 설명 참고 import java.util.*; class Solution { public int solution(int[] people, int ..

JAVA/Algorithm 2021.01.02

[프로그래머스/java] 위장 (HashMap - 가능한 조합의 개수)

https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 여러개의 집합에서 원소를 0~1개 뽑아서 만들 수 있는 모든 조합의 개수 문제의 '스파이는 하루 최소 한 개의 의상은 입습니다.' 때문에 모두 안뽑는 경우 1 제외 import java.util.*; import java.util.Map.Entry; class Solution { public int solution(String[][] clothes) { HashMap map = new HashMap(); // 배열의 종류 별로 원소가 몇개인지 map에 담기 for(int i = 0; i < clothes.length; i++) { String ke..

JAVA/Algorithm 2021.01.02

[프로그래머스/java] 전화번호 목록 (문자열 비교 - hashCode) *2021 첫 글*

https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 문제의 핵심은 다른 해시 문제들과 마찬가지로 "다량의 반복적인 문자열 비교가 필요하다"입니다. 문자열을 비교하는 가장 빠른 방법중의 하나가 Hash 기법이고, 그냥 쌩으로 equals()나 startWith()를 사용하는 것은 노가다 문자열 비교입니다. 제가 알기로 해당 메소드에 해싱 기법이 들어가지는 않는 것으로 알고 있습니다. 알고리즘에서 문제에서 "노가..

JAVA/Algorithm 2021.01.01

[프로그래머스/java] 큰 수 만들기

https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 주어진 String에서 큰 수를 조합하는건줄 알았는데 그냥 순서 그대로 놓고 제거만해서 가장 큰 수를 만드는 것이었다. 2개씩 비교하여 작은 수를 삭제하는 방식 class Solution { public String solution(String number, int k) { String answer = ""; StringBuilder sb = new StringBuilder(number); // number 문자열 삭제가 용이하기위해 사용 int index = 1; int delCount = 0; while(delCount != k) { ..

JAVA/Algorithm 2020.12.29

[프로그래머스/java] 더 맵게 (PriorityQueue)

https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 연산 후 계속해서 제일 작은 값 2개를 찾아 진행하므로 최소힙 이용 PriorityQueue https://conanglog.tistory.com/222 [JAVA] 우선순위큐 PriorityQueue 사용하기 우선순위큐 (Priority Queue) 우선순위가 높은 엘리먼트가 먼저 나가는 자료구조 heap을 이용하여 구현! 이진트리 구조 O(nlo..

JAVA/Algorithm 2020.12.29

[JAVA] 우선순위큐 PriorityQueue 사용하기

우선순위큐 (Priority Queue) 우선순위가 높은 엘리먼트가 먼저 나가는 자료구조 heap을 이용하여 구현! 이진트리 구조 O(nlogn) 1. 최소힙 (MinHeap) 제일 낮은 숫자가 root 1.1 Priority Queue 선언 PriorityQueue intMinHeap = new PriorityQueue(); PriorityQueue stringMinHeap = new PriorityQueue(); 1.2 값 추가하기 intMinHeap.add(1); intMinHeap.offer(2); 반환 타입에 따른 차이 add() 와 offer() 의 차이 1.3 값 삭제 intMinHeap.poll(); intMinHeap.remove(); 1.4 root 값 확인 intMinHeap.peek..

JAVA 2020.12.29
반응형
SMALL
반응형
LIST