[Python] 백준/BOJ 14500번: 테트로미노 (Gold 4)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다.정사각형은 서로 겹치면 안 된다.도형은 모두 연결되어 있어야 한다.정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다.정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다.아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다.테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 하는 프로그램을 작성하시오.테트로미노는 반드시 한 정사각형이 정확히 하나의 칸을 포함하도록 ..
[Python] 백준/BOJ 14626번: ISBN (Bronze 1)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 ISBN(International Standard Book Number)은 전 세계 모든 도서에 부여된 고유번호로, 국제 표준 도서번호이다. ISBN에는 국가명, 발행자 등의 정보가 담겨 있으며 13자리의 숫자로 표시된다. 그중 마지막 숫자는 체크기호로 ISBN의 정확성 여부를 점검할 수 있는 숫자이다. 이 체크기호는 일련번호의 앞에서부터 각 자리마다 가중치 1, 3, 1, 3…. 를 곱한 것을 모두 더하고, 그 값을 10으로 나눈 나머지가 0이 되도록 만드는 숫자 m을 사용한다. 수학적으로는 다음과 같다.ISBN이 abcdefghijklm 일 때, a+3b+c+3d+e+3f+g+3h+i+3j+k+3l+m ≡ 0 (mod 10)즉, 체크기호 m = 10 - (a+3b+c..
백준/BOJ: N과 M 문제 모음 (순열/조합 정리)
·
Algorithm/백준 (BOJ)
✏️ 순열과 조합순열: N개 중 중복 없이 M개를 뽑아 순서 있게 나열한다조합: N개 중 중복 없이 M개를 뽑아 순서 없이 나열한다중복순열: N개 중 중복 허용하여 M개를 뽑아 순서 있게 나열한다중복조합: N개 중 중복 허용하여 M개를 뽑아 순서 없이 나열한다 이름중복 허용순서공식itertools순열XOP(N, M) = N! / (N-M)!permutations(iter, M)조합XXC(N, M) = N! / M!(N-M)!combinations(iter, M)중복순열OON^Mproduct(iter, repeat=M)중복조합OXC(N+M-1, M)combinations_with_replacement(iter, M) ✏️ [백준] N과 M 문제 모음 문제를 클릭하면 백준 문제 링크로 이동하고, 풀이를 클..
[Python] 백준/BOJ 15666번: N과 M (12) (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.고른 수열은 비내림차순이어야 한다.길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 💡 Approach중복 조 코드를 기반으로 해서 이전값(prev)을 기록하는 변수를 추가했다.이전 값을 기록해서 이전값과 같은 숫자를 또 선택하지 못하게 막았다. 예를 들어, N=4, M=2, num=[1, 2, 3, 3]인 상황을 살펴보자.(1, 1)를 뽑은 후에 두 번째 자리의 숫자를 교체하려고 할 것이다.교체하게 되면 (1, 2)가 되고, 한..
[Python] 백준/BOJ 15665번: N과 M (11) (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다. 💡 Approach중복 순열 코드를 기반으로 해서 이전값(prev)을 기록하는 변수를 추가했다.이전 값을 기록해서 이전값과 같은 숫자를 또 선택하지 못하게 막았다. 예를 들어, N=4, M=2, num=[1, 2, 3, 3]인 상황을 살펴보자.(1, 1)를 뽑은 후에 두 번째 자리의 숫자를 교체하려고 할 것이다.교체하게 되면 (1, 2)가 되고, 한 번 더 교체하면 (1, 3)이 된다. 원소가 4개이므로 한 번 더 교체하려고 할 텐데, 여기서 prev가 없다면 3(index 2)에서..
[Python] 백준/BOJ 15664번: N과 M (10) (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열고른 수열은 비내림차순이어야 한다.길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 💡 Approach조합 코드를 기반으로 해서 이전값(prev)을 기록하는 변수를 추가했다.이전 값을 기록해서 이전값과 같은 숫자를 또 선택하지 못하게 막았다. 예를 들어, N=4, M=2, num=[1, 2, 3, 3]인 상황을 살펴보자.(1, 2)를 뽑은 후에 두 번째 자리의 숫자를 교체하려고 할 것이다.교체하게 되면 (1, 3)이 된다. 원소가 4개이므로 한 번 더 교체하려고..
[Python] 백준/BOJ 15663번: N과 M (9) (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열 💡 Approach순열 코드를 기반으로 해서 이전값(prev)을 기록하는 변수를 추가했다.이전 값을 기록해서 이전값과 같은 숫자를 또 선택하지 못하게 막았다. 예를 들어, N=4, M=2, num=[1, 2, 3, 3]인 상황을 살펴보자.(1, 2)를 뽑은 후에 두 번째 자리의 숫자를 교체하려고 할 것이다.교체하게 되면 (1, 3)이 된다. 원소가 4개이므로 한 번 더 교체하려고 할 텐데, 여기서 prev가 없다면 3(index 2)에서 3(index 3)으로 교체하게 된다.그래서 같은 값은 (1, 3)으로 교체될..
[Python] 백준/BOJ 15657번: N과 M (8) (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.고른 수열은 비내림차순이어야 한다.길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 💡 Approach 입력받은 num 리스트에서 순서 없이 M개의 원소를 뽑는다. (중복 조합) ✏️ Solution (itertools)import sysfrom itertools import combinations_with_replacementinput = sys.stdin.readlineN, M = map(..