boj127 [C++] 백준 2529번 : 부등호 2529번: 부등호 여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력� www.acmicpc.net 문제 백준문제이미지 풀이 K는 0 ~ 9까지의 수 즉 10개이다. 부등호를 만족하는 가장 큰 수를 만들기 위해서는 0~9중 가장 큰 수를 순서대로 넣으면 되고 부등호를 만족하는 가장 작은 수를 만들기 위해서는 0~9중 가장 작은 수를 순서대로 넣으면 된다. 처음 큰 수와 작은 수를 저장한 배열에 큰 수는 9부터 작은 수는 0부터 들어가므로 가장 큰 수는 prev_permutation을 가장 작은 수는 next_permutation을 사용하여 입력한 부등호에 .. 2020. 5. 30. [C++] 백준 15649번 : 다음 순열 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 문제 풀이 방법 1. 사전 순으로 나열하였을 때 다음 순열을 찾는 문제이다. 순열은 오름차순으로 이루어져 있고 가장 마지막 순열만 내림차순으로 이루어져 있다. 즉, 중복 X 만약 순열 A = 8457631 이 845로 시작하는 마지막 순열로 주어졌을 때 다음 순열을 찾는 방법은 1. 8 4 5 7 6 3 1 > > 위와 같이 뒤에서부터 시작해 A[i - 1] < A[i] 가 되는 i를 찾는다. 2. 다음 순열은 84?으로 시작하므로 이전인 ?는 5보다 크면서 7631중에 가장 작은 수(A[j])를 찾아 주어야 한다. 즉, .. 2020. 4. 17. [C++] 백준 15649번 : N과 M (3) 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 문제 풀이 N과 M (1) 에서 중복을 허용한 문제이다. N과 M (1) 코드에서 check 배열을 통한 중복확인을 빼면 된다. 아래 링크의 풀이 참고 [C++] 백준 15649번 : N과 M (1) 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력.. comgong-man.tistory... 2020. 4. 17. [C++] 백준 15649번 : N과 M (2) 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 문제 풀이 순서와 관련된 문제이다. 방법 1. 만약 N = 5, N = 3일 경우 1 2 3 1 2 4 1 2 5 1 3 2 → 1 3 4 (1 3 2는 오름차순이 아니므로) 1 3 5 ··· 와 같이 진행된다. 순서대로 진행되고 결과 수열이 오름차순이어야 하므로 첫 번째 자리는 1부터 시작하고 두 번째 자리의 숫자는 무조건 첫 번째 자리 숫자보다 큰 수가 나와야 한다. 마지막 자리 또한 무조건 두 번째 자리 숫자보다 큰 수가 나와야 한다. 즉, 중복이.. 2020. 4. 17. [C++] 백준 15649번 : N과 M (1) 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 문제 풀이 순서와 관련된 문제이다. 만약, M = 3, N = 5 일 경우 숫자는 중복 없이 골라야 하므로 첫 번째에 올 수 있는 숫자는 총 5가지, 두 번째에 올 수 있는 숫자는 첫 번째에 나온 숫자를 제외한 4가지, 마지막 세 번째에 올 수 있는 숫자는 첫 번째와 두 번째에 나온 숫자를 제외한 3가지가 된다. 이를 써보면 1 2 3 1 2 4 1 2 5 1 3 2 1 3 4 1 3 5 1 4 2 1 4 2 ··· 처럼 진행된다. 결과를 저장할 배열 .. 2020. 4. 17. [C++] 백준 1748번 : 수 이어쓰기 1 1748번: 수 이어 쓰기 1 첫째 줄에 N(1≤N≤100,000,000)이 주어진다. www.acmicpc.net 문제 풀이 만약 N = 130 이라면 1) 1 ~ 9 → 9 2) 10 ~ 99 → (99 - 10 + 1) * 2 3) 100 ~ 130 → (130 - 100 + 1) * 3 처럼 수의 자리수별로 나눌 수 있다. 즉, 1) + 2) + 3) 을 하면 구하고자하는 수의 자릿수를 구할 수 있다. 문제점 풀이 처럼 for문이 반복 될 때 마다 ans의 값을 계속 더했어야 하는데 대입만 해서 다른 결과가 나와 틀렸다는 결과가 나왔다. 반드시 더하는지 대입하는지 한번 더 체크를 하자... 코드 #include using namespace std; int main() { ios_base::sync.. 2020. 4. 16. 이전 1 ··· 18 19 20 21 22 다음