본문 바로가기

cpp10

[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.
[C++] 백준 6064번 : 카잉 달력 6064번: 카잉 달력 문제 최근에 ICPC 탐사대는 남아메리카의 잉카 제국이 놀라운 문명을 지닌 카잉 제국을 토대로 하여 세워졌다는 사실을 발견했다. 카잉 제국의 백성들은 특이한 달력을 사용한 것으로 알려져 있다. 그들은 M과 N보다 작거나 같은 두 개의 자연수 x, y를 가지고 각 년도를 와 같은 형식으로 표현하였다. 그들은 이 세상의 시초에 해당하는 첫 번째 해를 로 표현하고, 두 번째 해를 로 표현하였다. 의 다음 해를 표현한 것을 이라고 하자. 만일 www.acmicpc.net 문제 풀이 만약, 3 5 3 4 이라고 입력을 받았으면 M = 3, N = 5이고, 찾고자 하는 k번째 해인 는 가 되므로 1) 2) 3) 4) 5) 6) 7) 8) 9) ··· 와 같이 진행된다. 이때, M = 3, N.. 2020. 4. 16.