목록Coding Test/Baekjoon (15)
개발저장소
문제 https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 풀이 N개의 수가 주어질 때, 어떤 수가 다른 두 수의 합으로 나타낼 수 있다면 "좋다"라고 한다. 주어진 N개의 수 중 좋은 수의 개수를 출력해야 한다. 같은 값의 수가 주어질 수도 있지만 서로 다른 수로 취급한다. N은 1에서 2000 사이이고, 주어지는 수는 |Ai| ≤ 1,000,000,000 의 정수이다. 투포인터를 사용해 N개의 수를 탐색하는 방법으로 풀었다. 이때, 수의 범위가 크므로 Long형 배열로 입력..
문제 https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 풀이 N개의 수열이 주어졌을 때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구한다. Ai + ... + Aj 가 M으로 나누어 떨어지는 순서쌍 (i, j)를 구해야 한다. Si % M과 Sj % M의 값이 같다면 (Si - Sj) % M = 0이 되는 성질을 이용해야 한다. 누적 합을 가장한 모듈러 산술에 대한 문제이다. ..
문제 https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 풀이 자연수 N을 제곱수의 합으로 표현해야 한다. 예를 들어 5 = 1^2 + 2^2, 즉 2개의 항으로 나타낼 수 있다. 이때 N을 제곱수의 합으로 나타낼 때, 최소 항의 개수를 구한다. 모든 자연수 N의 최대 항의 개수는 N개이다. 1^2의 합으로 표현할 수 있기 때문이다. 제곱수 N의 최소 항의 개수는 무조건 1개이다. 제곱해서 N이 되는 수 하나..
문제 https://www.acmicpc.net/problem/2628 2628번: 종이자르기 첫줄에는 종이의 가로와 세로의 길이가 차례로 자연수로 주어진다. 가로와 세로의 길이는 최대 100㎝이다. 둘째 줄에는 칼로 잘라야하는 점선의 개수가 주어진다. 셋째 줄부터 마지막 줄까지 한 www.acmicpc.net 풀이 직사각형 모양의 모눈종이가 있다. 1cm마다 점선으로 표시되어 있고, 각 점선에는 순서대로 번호가 부여되어 있다. 직사각형의 가로와 세로의 길이, 그리고 잘라야하는 점선이 주어질 때, 가장 큰 종이 조각의 넓이를 구해야 한다. 가로로 잘라야 하는 점선과 세로로 잘라야 하는 점선을 각각 ArrayList로 입력 받은 다음 순서대로 정렬해서 문제를 해결하였다. 길이를 구해야하므로 처음과 끝도 A..
문제 https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 풀이 길이 N의 수열에서 연속된 수들의 부분합 중에 S 이상을 만족하는 것 중, 가장 짧은 경우의 길이를 구한다. N의 범위는 10 이상 100,000 이하이고 S의 범위는 0 초과 100,000,000 이하이다. 입력되는 N이 많기 때문에 이중 for문을 사용한 풀이는 무조건 시간 초과가 일어난다. 투포인터를 사용하면 일차원 배열 위에서 인덱스가 움직이는 방식이기 때문에, 최..