함량 100%

함지의 개발일기

알고리즘 41

[백준/브루트포스] 15656 N과 M (8) (Python, 파이썬)

https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. import sys input = sys.stdin.readline def go(index, start, n, m): if index == m: print(' '.join(ma..

[백준/브루트포스] 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개를 고른 수열 같은 수를 여러 번 골라도 된다. 중복을 허용했으므로 visited 배열은 필요없다. arr: 입력받은 배열 result: 출력할 배열 import sys input = sys.stdin.readline def go(index, n, m): if index == m: print(' '.join(map(str, resu..

[백준/브루트포스] 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개를 고른 수열 고른 수열은 오름차순이어야 한다. 재귀함수를 이용하여 풀었는데, 이 때 재귀함수는 어떤 위치에 올 수 있는 수를 결정하는 용도이다. 재귀함수에서 중요한 것은 종료조건이다. 여기서의 종료조건은 M개를 다 뽑았을 때이다. 그때 배열에 저장한 수를 모두 출력하면 된다. visited: 해당 수를 사용했는지 안했는지 판별하는..

[백준/브루트포스] 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개를 고른 수열 앞의 N과 M 문제와 달라진 점은 입력으로 N개의 수가 주어진다는 것이다. 재귀함수를 이용하여 풀었는데, 이 때 재귀함수는 어떤 위치에 올 수 있는 수를 결정하는 용도이다. 재귀함수에서 중요한 것은 종료조건이다. 여기서의 종료조건은 M개를 다 뽑았을 때이다. 그때 배열에 저장한 수를 모두 출력하면 된다. visited..

[백준/브루트포스] 15652 N과 M (4) (Python, 파이썬)

https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 이 문제의 조건은 다음과 같다. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. N과 M(2)와 N과 M(3) 문제의 조건을 합쳤다. 재귀함수를 이용하여 풀었는데, 이 때 재귀함수는 어떤 위치에 올 수 있는 수를 결정하는 용..

[백준/브루트포스] 15651 N과 M (3) (Python, 파이썬)

https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 이 문제의 조건은 다음과 같다. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 재귀함수를 이용하여 풀었는데, 이 때 재귀함수는 어떤 위치에 올 수 있는 수를 결정하는 용도이다. 재귀함수에서 중요한 것은 종료조건이다. 여기서의 종료조건은 M개를 다 뽑았을 때이다. 그때 배열에 저장한 수를 모두 출력하면 된다. 이전의 N과 M 문제와 다른 조건은 같은 수를 중복해서..

[백준/브루트포스] 15650 N과 M (2) (Python, 파이썬)

https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 이 문제의 조건은 다음과 같다. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 15650번 N과 M (1)에서 추가된 조건은 두 번째 조건이다. 재귀함수를 이용하여 풀었는데, 이 때 재귀함수는 어떤 위치에 올 수 있는 수를 결정하는 용도이다. 재귀함수에서 중요한 것은 종료조건이다. 여기서의 종료조건은 M개를 다 뽑았을 때이다. 그때 배열에 저장한 수를..

[백준/브루트포스] 15649 N과 M (1) (Python, 파이썬)

https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 브루트포스 방법을 사용하여 뽑기 문제를 풀 때 유형은 두 가지로 나뉜다. 1. 순서: N개 중에서 M개를 뽑을 때, 순서를 고려하는 경우 2. 선택: N개 중에서 M개를 뽑을 때, 순서를 고려하지 않는 경우 이 문제는 순서를 고려하지 않는다. 재귀함수를 이용하여 풀었는데, 이 때 재귀함수는 어떤 위치에 올 수 있는 수를 결정하는 용도이다. 재귀함수에서 중요한 것은 종료조건이다. 여기서의 종료조건..

[백준/브루트포스] 14500 테트로미노(Python, 파이썬)

www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 이 문제 또한 그냥 다 해보면 된다. 나올 수 있는 폴리오미노는 대칭과 회전을 허용하므로 총 19개이다. 따라서 이 19가지의 경우의 수를 모두 확인하여 가장 큰 값을 출력하면 된다. 참고로 이 문제는 정말... 집중해서 풀어야한다. 문제가 어렵다기보다는 디버깅이 매우 힘들기 때문이다. 이 문제에서는 오류를 찾는 것이 매우 힘들기 때문에 처음에 코드를 작성할 때 최대한 집중해서 작성하는 것이 좋다. import..

[백준/브루트포스] 1107 리모컨(Python, 파이썬)

www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 숫자버튼을 누르고, 그 다음 +나 -중 하나만 연속해서 눌러야한다. 이 때, 숫자버튼을 눌러 가야하는 채널을 정해야하는데 이때 브루트포스 방법으로 구현하면 된다. 1. 이동할 채널 C를 정한다. 2. C에 포함되어 있는 숫자 중에 고장난 버튼이 있는지 확인한다. - 수를 10으로 계속해서 나누면서 하나씩 검사 3. 고장난 버튼이 포함되어 있지 않다면 |C-N|을 계산해 +나 -버튼을 몇 번 눌러..