"꾸준하고 완벽한 한 걸음"

2024/07/21 4

[백준 11659] 구간 합 구하기 4 [Java]

문제수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.출력총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.풀이주어진 배열에 대한 구간 합을 구하는 문제다.최대 N = 1e5, M = 1e5 이므로 매번 구간 합을 구하면 시간초과가 발생한다. 부분합을 미리 구해주자.j번째 까지의 합에서 i - 1까지의 합을 빼야 한다. 출력 횟수가 많으므로 한번에 출력하자.소스코드보기출처https://www.acmicpc.net/problem..

[백준 11726] 2×n 타일링 [Python]

문제2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.입력첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)출력첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.풀이dp[i] : 2xi 크기의 타일을 채우는 모든 경우의 수 n = 1 일때 1 : 2x1타일 1개로 채우는 방법n = 2 일때 2 : 2x1, 1x2 타일을 각각 2개로 채우는 방법n >= 3에 대해서는 점화식을 세울 수 있다.dp[i - 1]에 대해 2x1타일을 1개 붙이거나, dp[i - 2]에 대해 1x2 타일을 2개 붙이는 경우를 활용할 수 있다.이때, dp[i - 2]에 대해 ..

[백준 06378] 디지털 루트 [Java]

문제양의 정수 N의 디지털 루트를 구하려면 N을 이루고 있는 모든 자리수를 더해야 한다. 이때, 더한 값이 한 자리 숫자라면, 그 수가 N의 디지털 루트가 된다. 두 자리 이상 숫자인 경우에는 다시 그 수를 이루고 있는 모든 자리수를 더해야 하며, 한 자리 숫자가 될 때 까지 반복한다.24의 디지털 루트를 구해보자. 2+4=6이다. 6은 한 자리 숫자이기 때문에, 24의 디지털 루트는 6이 된다. 39의 경우에는 3+9=12이기 때문에, 한 번 더 더해야 한다. 따라서, 1+2=3이 디지털 루트가 된다.양의 정수 N이 주어졌을 때, 그 수의 디지털 루트를 구하는 프로그램을 작성하시오.입력한 줄에 하나씩 양의 정수가 주어진다. 입력의 마지막 줄은 0으로 나타낸다.  수는 최대 1000자리이다.출력입력으로 ..

[코드트리] 최고의 33위치 [C/C++] for 코드트리 조별과제

풀이N * N 격자에서 3 * 3 범위에 존재하는 1의 최대갯수를 구하는 문제다.N이 20으로 작으니 윈도우 슬라이싱없이 모든 경우를 계산해도 충분하다.격자 정보를 입력받은 후에 1 ~ N - 2 범위를 탐색해주자.1 ~ N - 2 범위내의 (i, j)에 대해 (i ~ i + 2, j ~ j + 2)로 만들어지는 3 * 3 범위 내 1이 몇개 존재하는지 구하자.만약 이전 범위보다 갯수가 많다면 최댓값으로 갱신해주자. 만약 1의 갯수가 9라면 주어진 문제에서 가질 수 있는 최댓값 이므로 탐색을 중단하자.소스코드보기출처 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetr..

PS 2024.07.21