본문 바로가기
  • 개발 삽질 블로그

프로그래밍/백준 문제풀이26

백준 2309: 일곱 난쟁이[JAVA] / 투포인터 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 9명 중 7명을 뽑는 것은 포함하지 않은 2명을 뽑는 것과 같다. 9명 난쟁이들의 키의 합을 구하고 100과의 차이를 구한다. 그 차이를 n이라고 두면 n은 일곱 난쟁이에 포함되지 않는 두 명의 키의 합과 같을 것이다. 반복문을 돌려 키의 합이 n인 난쟁이 두 명을 찾아주는 알고리즘을 짰다. import java.util.*; public class Main { public static void main(.. 2022. 10. 3.
C로 푼 문제들 보호되어 있는 글 입니다. 2022. 9. 7.
백준 1978: 소수찾기(JAVA) https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 이전 소수 관련 문제 풀이와 비슷하다. 1000이하의 자연수에 대해 판별하는 것이기 때문에 1부터 1000까지 소수인지 아닌지를 미리 구해주고 prime이라는 boolean 배열에 담아준다. 2부터 1000까지 배수인 것을 소수가 아니라고 표시한다. 아래 코드에서는 prime[i]가 false이면 i는 소수이다. import java.util.*; public class Main { public static void main(String[] args){ Scanne.. 2022. 8. 20.
백준 17425: 약수의 합(JAVA) https://www.acmicpc.net/problem/17425 17425번: 약수의 합 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net 이 문제는 이전 문제의 심화버전인 것 같다. 이전 약수의 합 문제 + 여러 개의 테스트 케이스 이전 17427번 문제를 풀었던 코드를 응용했다. n이 1부터 1000000까지 f(n)과 g(n)을 구한다. 여기서 g(n) = g(n-1) + f(n)이라는 것을 알면 코드를 쉽게 짤 수 있다. T번 만큼 N을 입력받아 각 g(N) 값을 출력해주.. 2022. 8. 18.
백준 17427: 약수의 합 2 https://www.acmicpc.net/problem/17427 17427번: 약수의 합 2 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net 각각 f(N)을 저장하는 배열을 만들었고 1부터 N까지 각 i의 배수 인덱스에 있는 배열 자리에 i를 더하는 것을 반복했다. 이 때 g(N)을 저장하는 변수는 int로 하면 오버플로우가 발생할 수 있으니 long 타입으로 선언해주었다. import java.util.*; public class Main { public static void.. 2022. 8. 18.
백준 1037: 약수 https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 약수들 중 가장 큰 것과 가장 작은 것을 곱하면 되는 문제이다. 진짜 약수들이기 때문에 최소공배수로 구하면 안된다. 진짜 약수는 약수들 중 1과 N을 제외한 것이다. 예를 들면 6 3 4 2 12 6 8 에서 답은 24인데 24의 약수는 1 2 3 4 6 8 12 24이다. 좌 우 대칭으로 약수를 하나씩 곱하면 최소공배수를 구할 수 있다. 따라서 진짜 약수 중 가장 작은 수와 가장 큰 수를.. 2022. 8. 12.