목록데이터 엔지니어링 정복/Algorithm (159)
지구정복
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 -문제해설 무작정 풀면 바로 시간초과뜬다.. 풀어서 적어보니 규칙이 있었고 간단하게 구현할 수 있었다. 만약 n이 9일경우 f(1) = 1 f(2) = 1 + 2 f(3) = 1 + 3 f(4) = 1 + 2 + 4 f(5) = 1+ 5 f(6) = 1 + 2 + 3 + 6 f(7) = 1 + 7 f(8) = 1 + 2 + 4 + 8 f(..
https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net -문제해설 처음에 입력받은 약수들을 반복문 돌리면서 최소공배수를 구하면되는 건가 했지만 최소공배수가 원래의 값과 다를 수 있는 경우가 있다. 예를 들면 32의 경우 입력되는 약수는 2 4 8 16 인데 여기서 최소공배수는 16이 되어버린다. 그래서 고민하다가 그냥 입력받은 약수 중에서 최소값과 최대값을 곱해버리면 원래의 값이 되기 때문에 이를 이용해서 구현했더니 정답이었다 ㅎ 32의 경우 ..
https://www.acmicpc.net/problem/4375 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net -문제풀이 맨 처음에 뭔 소린가 싶었다.. 문제를 정리해보면 2와5로 나누어 떨어지지않는 n이 주어졌을 때, 1로만 이루어진(1, 11, 111, 1111,.... ) n의 배수 중 가장 작은 값의 자리수를 출력하는 문제이다. 또한 여러 개의 테스트케이스가 주어진다고 했으므로 테스트케이스가 계속 입력될 수 있도록 코드를 구현해야 한다. n이 3일 경우 111이 1로만 이루어진 3의 가장 작은 배수이다. 따라서 3자리이므로 답은 3이다. n이 7일 경우 11..
https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net -문제해설 https://st-lab.tistory.com/235 위 블로그 내용 참고 전형적인 분할정복 문제인데 분할정복을 for문을 이용해서 하려다가 구현하지 못해서 다른 분의 블로그를 참고해서 그냥 반복문 사용을 하지 않고 풀었다. ㅎㅎ 먼저 처음의 종이의 (0, 0)의 값과 전체값이 똑같은지 확인하기 위해 colChk() 메소드를 통해서 확인하고 같은 경우 -1, 0, 1 중에 ..