목록Java (18)
정리
백준 2485번: 가로수 - 유클리드 호제법을 사용해서 푸는 문제입니다. 각 가로수 간의 거리를 구합니다. 거리들의 최대공약수를 구합니다. (거리 / 최대공약수 - 1)들의 합을 구하면 가로수의 최소수를 구할 수 있습니다. 유클리드 호제법에 대한 정보는 아래 게시물에서 참고할 수 있습니다. 2020/07/03 - [백준 BOJ] - 백준 2609번: 최대공약수와 최소공배수 더보기
백준 2609번: 최대공약수와 최소공배수 - 최대공약수와 최소공배수를 구하는 가장 널리 알려진 방법입니다. 이러한 방법을 for문을 이용하여 코드를 만들면 아래와 비슷한 코드를 만드실 수 있을 겁니다. 하지만 시간 초과에 걸려 통과하지 못합니다. - 이 문제는 "유클리드 호제법"을 사용하여 풀어야 합니다. 유클리드 호제법이란, 두 양의 정수 a, b (a > b)에 대하여 a = bq + r (0 ≤ r a = 18, b = 6 a = 18, ..
백준 1037번: 약수 - 약수의 개수 제곱수: 홀수 개 제곱수가 아닌 수: 짝수 개 - 이 문제에서 제곱수는 진짜약수개수=1이다. 따라서 array[0] * array[0] 을 출력해주면 된다. - 제곱수가 아닌 수인 경우에는 퀵소트(quickSort)를 통해서 오름차순으로 정렬 한 뒤, array[0] * array[진짜약수개수-1] 을 출력해주면 된다.
백준 1978번: 소수 찾기 - Arraylist 혹은 배열을 사용하여 문제를 풉니다. - 소수는 1과 자기자신만으로 나누어지는 수이므로 2부터 입력된 수-1 까지의 수로 나누어지는지 확인합니다. - 만약에 나누어 떨어진다면 count--을 한 뒤 내부 for문을 나오면 count++을 하여 결과적으로 count가 변함 없게 유지합니다. - 1은 내부 for문이 작동되지 않아 소수로 인식되므로(count++가 됨) if문을 통해 1은 count--을 합니다.
백준 10815번: 숫자 카드 -선형 탐색법(Linear Search)을 사용하면 시간 제한을 지키지 못하므로 이진 탐색법(Binary Search)을 사용해야 됩니다. -이진 탐색법을 사용하기 위해서는 오름차순으로 정렬되어 있어야 하므로 퀵소트(QuickSort)를 이용합니다.
백준 17074번: : 정렬 배열에 저장된 수를 하나씩 제외해서 배열 전체가 정렬이 되는지 확인하면 시간제한을 초과합니다. 경우의 수를 나눠 i) 이미 정렬이 되어 있는 경우 - 이미 배열이 정렬 되어 있으므로 어느 수를 버리더라도 정렬이 유지되므로 N개의 경우의 수가 나옵니다. ii) 한 구간 빼고 정렬이 되어 있는 경우 - array[i-1]