https://www.acmicpc.net/problem/4344
작성해야 하는 함수는 다음과 같다.C, C11, C (Clang), C11 (Clang): long long sum(int \*a, int n);a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ ai ≤ 1,000,000, 1 ≤ n ≤ 3,000,000
두 수 a와 b의 최대공약수(g)는 a와 b의 공통된 약수 중에서 가장 큰 정수이다.최대공약수를 구하는 가장 쉬운 방법은 2부터 min(a, b)까지의 모든 정수로 나누어 보는 방법이다.최대공약수가 1인 두 수를 '서로소'라고 한다.출처 : https://ww
N이 소수가 되려면 2보다 크거나 같고, n-1보다 작거나 같은 자연수로 나누어 떨어지면 안 된다.1부터 n까지 범위 안에 들거가는 모든 소수를 구하려면 에라토스테네스의 체를 사용한다.1\. 2부터 N까지 모든 수를 써 놓는다.2\. 아직 지워지지 않은 수 중에서 가장
이번 정렬문제는 입력하는 N의 범위가 무려 10,000,000이다.따라서 이 입력값을 전부 저장하면 당연히 메모리가 초과될것이다.그리고 시간제한 3초와 메모리제한 8MB를 고려해도 이중for문으로 푸는것은 아무래도 좋지 않은 선택이었다. (고려 안 하고 풀었다가 엄청
M이상 N이하의 소수를 모두 출력하는 문제이다.다음의 문제를 풀기 위해서 쓰는 방법은 주로 '에라토스테네스의 체'이다.'에라토스테네스의 체'가 무엇인지 예를들어 보자, 2부터 N까지의 소수를 구한다고 하면, 1\. 2부터 N까지의 모든 수를 나열한다.2\. 아직 지워지
문제
문제 풀이 다음 문제는 에라스토테네스의 체로 M이상 N이하의 자연수 중 소수인 것을 골라 소수의 합과 최솟값을 찾는 문제인데 이 문제를 풀기 위해서 다양한 방법이 있지만 이번에는 알고리즘을 통해 풀어보자. 우선 '에라토스테네스의 체'가 무엇인지 예를들어 알아보자, 2부터 N까지의 소수를 구한다고 하면, 2부터 N까지의 모든 수를 나열한다. 아직 지워지지...
문제 풀이 설명 코드 출처 : https://www.acmicpc.net/problem/2960
출처 : https://www.acmicpc.net/problem/10872
백준문제 풀이
조합 0의 개수를 푸는 문제는 팩토리얼 0의 개수를 우선 이해하는 것이 필요하다.팩토리얼 0의 개수위 링크의 문제를 보면 알겠지만 한 팩토리얼 값에 2와 5의 승수가 겹치는 수를 구하는 것이 관건이다.팩토리얼에서 0의 개수를 찾는 문제는 2보다 적게 나오는 5의 갯수만
문제 풀이 설명 문자열을 거꾸로 출력하는 것은 스택을 사용하면 된다. 그리고 태그 안과 밖을 구분하는 것은 안에 있으면 true 밖이면 false로 구별하면 된다. 우선 ''이 오면 그대로 출력 태그 안에 있으면 문자열을 그대로 출력 태그 밖에 있으면서 공백이 오면 스택에 있는 것들을 빌 때까지 pop하여 출력하고 공백이 아니면 스택에 push한다. ...
문제 풀이 설명 '('와 ')'가 서로 떨어져서 이루어지고 있으면 막대기가 하나 생성되고 '('와 ')'가 서로 붙어서 이루어지고 있으면 레이저가 생성되어서 막대기를 나눈다. 스택을 이용하여 푸는 문제이다. 레이저인 경우 '('의 개수를 계산하고 쇠 막대기 인 경우
문제 풀이 설명 코드 참고 : 출처 : https://www.acmicpc.net/problem/9012
참고 : 출처 : https://www.acmicpc.net/problem/9613
문제 풀이 설명 수빈이와 동생 N명이 있다. 수빈이는 동생 N명을 거쳐 마지막 동생까지 찾아야하고 수빈이는 걷거나 순간이동을 할 수 있다. 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-D 또는 X+D로 이동할 수 있다. 수빈이가 모든 동생을 거쳐서 찾아가기 위한
문제 풀이 설명 자바 문자열 입력에 대한 개념이 익숙치 않아서 풀게된 문제이다 공부하는 김에 자바언어의 입출력에 대한 기본적인 개념 또한 공부해보는 시간을 가졌다 자바 입출력에 대한 개념은 다음 링크를 보면 알 수 있다. 코드 코드설명 참고 : https://st
문제 풀이 설명 첫 번째 입력받은 값은 숫자의 갯수 두 번째 입력받은 값은 값의 각 자릿수의 합을 구하는 문제이다. 문자열 입력문제라고 볼 수 있다. Scanner로 입력받아 charAt()을 사용하여 푸는 방법 BufferedReader로 입력받아 getBytes
입력하는 문자열은 소문자로만 이루어져있다.a~z까지 모두 출력하고 문자열에 대해 해당 문자가 처음으로 나오는 위치를 출력한다.참고 : 출처 : https://www.acmicpc.net/problem/10809
참고 : 출처 : https://www.acmicpc.net/problem/1463
문제 풀이 설명 2Xn 직사각형을 1X2 2X1타일로 채우는 방법의 수이다. D[n]=2Xn직사각형을 채우는 방법의 수 2Xn 직사각형이 있을 때, 가장 오른쪽에 타일을 놓을 수 있는 방법은 총 2가지가 있다. 두가지 경우를 합친 것이 D[n] 즉, D[n] = D[n-1] + D[n-2] D[n] = D[n-1] + D[n-2]이 실제로 적용되는지...
2xn 직사각형을 1x2, 2x1, 2x2 타일로 채우는 방법의 수2xn 타일링 문제에서 2x2 타일이 추가된 문제이다.참고 :출처 : https://www.acmicpc.net/problem/11727
문제 풀이 설명 D[i] = i를 1,2,3의 합으로 나타내는 방법의 수 D[i] = D[i-1] + D[i-2] + D[i-3] 코드 코드설명 참고 : 출처 : https://www.acmicpc.net/problem/9095
문제 풀이 설명 카드 N개를 구매해야한다. 카드팩은 총 N가지 종류가 존재한다. i번째 카드팩은 i개의 카드를 담고있고, 가격은 P[i]원 이다. 카드 N개를 구매하는 비용의 최대값을 구하는 문제 D[i] = 카드i개 구매하는 최대 비용 카드 i개를 구매하는 방법은
참고 : 출처 : https://www.acmicpc.net/problem/11052
이전의 1,2,3 더하기문제에서 같은 수를 두 번 이상 연속해서 사용하면 안 된다.Di = i를 1,2,3의 합으로 나타내는 방법의 수, 마지막에 사용한 수는 jDi = i를 1,2,3의 합으로 나타내는 방법의 수, 마지막에 사용한 수는 1Di = i를 1,2,3의 합
DN = 길이가 N인 계단수, 마지막수 L마지막 수와 그 앞의 수가 서로 1씩 차이난다는 것을 생각해보면DN-1 DN-1 로 표기할 수 있다는 것을 알 수 있다.다만 L의 경우 0~9 까지이므로 앞의 자리가 0이나 9일때 생기는 경우를 예외처리 해주어야 한다. ( 0보
참고 :출처 : https://www.acmicpc.net/problem/11053
가장 긴 증가하는 부분수열참고 :출처 : https://www.acmicpc.net/problem/14002
n개의 정수로 이루어진 임의의 수열이 주어진다.이중 연속된 몇개의 숫자를 선택해서 구할 수 있는 합 중 가장 큰 합을 구한다.Ai = 실제로 입력받는 수가 들어간다.Di = i번째에서 끝나는 연속합의 최대값이 들어간다.Di = max(Di-1+Ai+Ai)시간복잡도 :
참고 :출처 : https://www.acmicpc.net/problem/1912
1,2,3 더하기와 비슷한 문제이다.참고 :출처 : https://www.acmicpc.net/problem/2225
가로 두칸 세로 n칸으로 사자를 배치하되 사자들은 세로 가로로 서로 붙어 있으면 안 된다.참고 :출처 : https://www.acmicpc.net/problem/1309
참고 :출처 : https://www.acmicpc.net/problem/11057
참고 :출처 : https://www.acmicpc.net/problem/9465
문제 풀이 설명 코드 코드설명 참고 : 출처 : https://www.acmicpc.net/problem/1932
브루트 포스는 모든 경우의 수를 다 해보는 것이다.(이때, 경우의 수를 다 해보는데 걸리는 시간이 문제의 시간제한을 넘지 않아야 한다.)브루트포스로 문제를 풀기 위해서는 다음과 같은 3가지 단계를 생각해 볼 수 있다.1\. 문제의 가능한 경우의 수를 계산해본다.• 직접
아홉 명의 난쟁이 중 일곱 명의 난쟁이를 찾는 문제이다.9C2 = 36 즉, 경우의 수가 36가지 이다.사람이 구해도 크게 오래 걸리지 않는 경우의 수 이다.모든 난쟁이 중에서 7명의 난쟁이가 아닌 2명의 난쟁이를 찾고 ( 9C2 = 36 )나머지 난쟁이의 키의 합을
NxN 크기의 테이블에 사탕이 있다.인접한 두 칸을 고르고, 사탕을 교환한다.그 다음, 같은 색으로 이루어져 있는 가장 긴 연속 부분 행 또는 열을 고르는 문제시간복잡도 : NxN 크기의 테이블을 가지고 있으므로 O(n^2)이다.참고 :출처 : https://
'1부터 N까지 나열되어있는 수에서 매 회마다 K번째에 위치한 수를 뽑아내는 수열(요세푸스 수열)'을 구하는 문제이다.1부터 7까지의 수에서 3번째 위치한 수 마다 제거한다고 하면seq {1, 2, 3, 4, 5, 6, 7}, result {}round 1 : seq
1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19 를 충족하도록 식을 짜야한다.참고 :출처 : https://www.acmicpc.net/problem/1476
'리모컨을 이용해 원하는 채널을 바꾸려면 몇번 리모컨 버튼을 눌러야 하는가'를 구하는 문제이다.즉, 리모컨 버튼을 누르는 최솟값을 구하는 문제조건 • 버튼: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, ‒• 일부 숫자 버튼이 고장났다.• 현재 보고 있는
참고 : 출처 : https://www.acmicpc.net/problem/6064
참고 : 출처 : https://www.acmicpc.net/problem/1748
참고 :출처 : https://www.acmicpc.net/problem/11653
참고 : 출처 : https://www.acmicpc.net/problem/15649
길이가 N인 배열 A와 B의 원소값을 곱하여 만들어지는 함수 S의 최소의 값을 구하는 문제이다단, S의 최소값을 구하기 위해 A의 수는 재배열 할 수 있지만 B값은 재배열 할 수 없다.따라서 a\[]와 b\[]를 오름차순하여 a의 첫 인덱스와 b의 마지막 인덱스를 곱하
참고 : 출처 :
참고 : 출처 : https://www.acmicpc.net/problem/10815
참고 :출처 : https://www.acmicpc.net/problem/10972
참고 :출처 : https://www.acmicpc.net/problem/10974
참고 :출처 : https://www.acmicpc.net/problem/10819
암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음과 최소 두 개의 자음으로 구성되어 있다암호를 이루는 알파벳이 암호에서 증가하는 순서로 배열되었어야 한다암호로 사용할 수 있는 문자의 종류는 C가지 이다.이 조건을 만족하는 암호를 모두 구하는 문제•
문제 설명
참고
참고
문제 풀이 설명 코드 코드설명 출처 문제 참고
문제 풀이 설명 코드 코드설명 출처 문제 참고
문제 풀이 설명 코드 코드설명 출처 문제 참고
sort(key=lambda)https://www.acmicpc.net/problem/1874
https://www.acmicpc.net/problem/4673
https://www.acmicpc.net/problem/5397
문제 : https://www.acmicpc.net/problem/2668
출처
출처