java 205

최빈값 구하기 (자바, Java)

map 자료형으로 각 숫자별로 나온걸 카운팅해서, 카운트 배열의 최대값을 이용해 구했다. 배열은 순서에 따른 값을 추출하기 좋으나, 값에 따른 순서를 추출하려면 브루트포스나 이분탐색을 이용해야 하는데, 이런 경우 맵을 이용해 값을 key로, 배열의순서를 value로 놓아서 양쪽을 왔다갔다 하는 식으로 많이 풀었다. import java.util.Arrays; import java.util.HashMap; import java.util.Map; class Solution { public int solution(int[] array) { int answer = 0; int[] count = new int[1000]; for (int i : array) { count[i]+=1; } Map map = new ..

순서쌍의개수 (자바, Java)

브루트포스로 풀어도 상관없지만, 효율적인 풀이를 위해, n^(1/2) 까지만 반복문을 돌렸다. 왜냐하면 n^(1/2) 이후의 약수들은, 그 이전의 약수와 순서쌍으로 이어져서 순서만 바꿔주면 되기 때문. 주의할 점은, 제곱수는 순서쌍이 똑같아 1개만 추가해줘야한다는 점이다. class Solution { public int solution(int n) { int answer = 0; for (int i=1; i

n의 배수 고르기 (자바, Java)

ArrayList로 풀어도 되지만, 그냥 Queue를 써서 풀었다. 크기가 가변적인 경우에는 ArrayList가 그렇게까지 효율적이지는 않다고 알고 있다. import java.util.LinkedList; import java.util.Queue; class Solution { public int[] solution(int n, int[] numlist) { int[] answer = {}; Queue queue = new LinkedList(); for (int i : numlist) { if (i%n==0) { queue.add(i); } } answer = new int[queue.size()]; for (int i=0; i

분수의 덧셈 (자바, Java)

유클리드 호제법을 이용해서 최대공약수로 나눠 기약분수로 표현해주면 된다. 예전에 백준에서 거의 똑같은 문제를 본 기억이 난다. class Solution { public int[] solution(int denum1, int num1, int denum2, int num2) { int[] answer = {}; answer = new int[2]; int a = denum1*num2 + denum2*num1; int b = num1 * num2; if (a>=b) { answer[0] = a/gcd(b, a); answer[1] = b/gcd(b, a); } else { answer[0] = a/gcd(a, b); answer[1] = b/gcd(a, b); } return answer; } public..

15654. N과 M (5) (자바, Java)

N과M 시리즈 그 네번째. 1번 문제를 중심으로 차이점을 설명하므로, 안보신 분들은 그것부터 보자. N과M (1) 15649. N과 M (1) (자바, Java) 백트래킹 알고리즘 첫걸음. 나중에 알았는데, 3대 뉴비절단기로 재귀, 백트래킹, 동적계획법이 있다고 한다. 나도 알고리즘 공부 첫 위기가 재귀 (별찍기+하노이의탑)에서 왔고, 거기를 극복하고 mewtwo.tistory.com 이번엔 1부터 n까지가 아니라, 숫자를 입력값으로 받는다. 그냥 숫자값을 배열로 받아서, i 대신 배열의 i번째값으로 처리해주면 끝. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util..

15652. N과 M (4) (자바, Java)

N과M 시리즈 그 네번째. 1번 문제를 중심으로 차이점을 설명하므로, 안보신 분들은 그것부터 보자. N과M (1) 15649. N과 M (1) (자바, Java) 백트래킹 알고리즘 첫걸음. 나중에 알았는데, 3대 뉴비절단기로 재귀, 백트래킹, 동적계획법이 있다고 한다. 나도 알고리즘 공부 첫 위기가 재귀 (별찍기+하노이의탑)에서 왔고, 거기를 극복하고 mewtwo.tistory.com 3번의 중복가능, 2번의 오름차순을 합해 비내림차순으로 정의했다. 중복가능에서 visit로 체크할 필요없다는 점, 오름차순에서 앞 수를 매개변수로 받아 반복문 시작점에 대입해주면 된다는 점을 종합하면 된다. import java.io.BufferedReader; import java.io.InputStreamReader; ..