본문 바로가기

N과 M11

백준 알고리즘 15665 (N과 M(11)) - python [문제] 백준 알고리즘 15665 (N과 M(11)) - python > https://www.acmicpc.net/problem/15665 15665번: N과 M (11) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net N과 M(10)에서 비내림차순 조건을 제외하고, 같은 수를 출력해도 되는 문제 1. 비내림차순 조건을 위해 사용했던 idx로 range 조절 방법을 뺀다. 2. 같은 수를 여러 번 골라도 되므로 visited 방법을 뺀다. [Code] N, M = map(int, input().split()) L = list(m.. 2019. 10. 16.
백준 알고리즘 15664 (N과 M(10)) - python [문제] 백준 알고리즘 15664 (N과 M(10)) - python > https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net N과 M(9)에서 비내림차순 조건이 붙은 문제. N과 M(9)와 같은 방법에서 idx로 i+1을 넘겨주어 range를 조정해주면 해결. [Code] N, M = map(int, input().split()) L = list(map(int, input().split())) L.sort() visited = [Fal.. 2019. 10. 16.
백준 알고리즘 15663 (N과 M(9)) - python [문제] 백준 알고리즘 15663 (N과 M(9)) - python > https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 이제는 N개의 자연수 중에 겹치는 수가 존재할 수 있는 문제다. 결론부터 말하면 처음에는 시간초과로 계속 실패했다. (pypy3로는 간신히 통과) 접근법 자체가 문제는 아니었고, 원인은 python에서 편리하게 쓰는 'if A in B' 이다. 이 구문이 A가 B배열 안에 소속되어 있는지를 검사하기 위해 for문이나.. 2019. 10. 16.
백준 알고리즘 15657 (N과 M(8)) - python [문제] 백준 알고리즘 15657 (N과 M(8)) - python > https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. www.acmicpc.net N과 M(7)에서 오름차순 조건이 추가된 문제이다. idx를 적용한 range 조건을 추가하면 된다. 같은 수를 골라도 되므로 idx로 i을 넘.. 2019. 10. 16.
백준 알고리즘 15656 (N과 M(7)) - python [문제] 백준 알고리즘 15656 (N과 M(7)) - python > https://www.acmicpc.net/problem/15656 15656번: N과 M (7) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. www.acmicpc.net N과 M(6)와 비슷한데, 같은 수열을 여러번 골라도 되며 오름차순이 없는 문제 visited를 쓰지 않고, idx를 적용한 range도 쓰지 않으면 끝이다. 오히려 코드로는 간단해진다. [Code] N, M = map(int, input().split()) L = list(map(i.. 2019. 10. 16.
백준 알고리즘 15655 (N과 M(6)) - python [문제] 백준 알고리즘 15655 (N과 M(6)) - python > https://www.acmicpc.net/problem/15655 15655번: N과 M (6) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 오름차순이어야 한다. www.acmicpc.net N과 M(5)에서 오름차순 방식 추가. idx 적용한 range 조절만 해주면 끝이다. [Code] N, M = map(int, input().split()) L = list(map(int, input().split())) L.sort() visited = [False] * N out.. 2019. 10. 16.
백준 알고리즘 15654 (N과 M(5)) - python [문제] 백준 알고리즘 15654 (N과 M(5)) - python > https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 이제는 N과 M을 자연수가 아닌 지정된 배열을 출력시킨다. 중복 수열을 허용하지 않고, 사전순은 동일하다. 그렇다면, 출력용 배열인 out에 i가 아닌 배열의 [i]번째를 넣으면 동일한 구조이다. 사전순으로 출력하기 위해서 지정된 배열 L을 sort() 시키고, out에 L[i]를 append 해주어 어렵지 않게 풀 .. 2019. 10. 15.
백준 알고리즘 15652 (N과 M(4)) - python [문제] 백준 알고리즘 15652 (N과 M(4)) - python > https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 전형적인 N과 M 문제인데, 1. 같은 수를 여러 번 골라도 되고, 2. 비내림차순(순열의 오른쪽 요소가 크거나 같음) 1.을 해결하기 위해 재귀 시 i+1이 아닌 i를 넘겨주어 같은 수도 고를 수 있게 함 2.를 해결하기 위해 idx 적용(N과 M(2))에서 썼던 방법 사용 [Code] N, M = map(int,.. 2019. 10. 15.
백준 알고리즘 15651 (N과 M(3)) - python [문제] 백준 알고리즘 15651 (N과 M(3)) - python > https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net N과 M(1)과 비슷한데, 같은 수를 여러번 골라도 된다. 그래서 N과 M(1)에서 사용했던 방법에서 오히려 같은 수 중복 제거 조건을 빼줬다. 탐사 여부를 담당하는 변수만 제거해주면 끝! 하지만, 역시 Python은 시간이 오래 걸린다... [Code] N, M = map(int, input().split()) o.. 2019. 10. 15.
728x90