문제 풀이 예제2 입/출력을 보게 되면 아래의 그림과 나타낼 수 있는데 이전에 풀었던 permutations 문제와 조금 다르다. [python] 백준 15649번 N과 M (1) 문제 풀이 N과 M의 입력이 주어지는데 N과 M의 조건은 아래와 같다. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 쉽게 말해 N에 4, M에 2가 들어왔을 경우 1, 2, 3, 4 중에 2개를 고르면 아래 begin-dev-awos.tistory.com permutations 문제에서는 자기 자신을 제외한 순서쌍이었는데 이번 문제는 자기 자신을 포함한 모든 수의 순서쌍이다. 파이썬에서 itertools 라이브러리의 product 함수가 있어 풀 수 있는 문제이다. 아래의 링크에 product 함수에 대한 설명이 ..
문제 풀이 출력의 결과가 조합의 결과와 같은 것을 알 수 있다. 조합은 뽑는 순서 상관 없이 하나로 생각하는 경우로 순열과는 반대의 개념이다. 이런 문제들은 python에서 permutations(순열)와 combinations(조합) 함수를 사용하면 쉽게 구할 수 있다. 반대로 permutations에 대한 결과는 아래의 문제에서 확인해볼 수 있고 전반적인 코드의 내용이 같다. [python] 백준 15649번 N과 M (1) 문제 풀이 N과 M의 입력이 주어지는데 N과 M의 조건은 아래와 같다. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 쉽게 말해 N에 4, M에 2가 들어왔을 경우 1, 2, 3, 4 중에 2개를 고르면 아래 begin-dev-awos.tistory.com 완성된 코드..
문제 풀이 N과 M의 입력이 주어지는데 N과 M의 조건은 아래와 같다. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 쉽게 말해 N에 4, M에 2가 들어왔을 경우 1, 2, 3, 4 중에 2개를 고르면 아래의 그림과 같이 수열이 뽑힌다. 이와 같이 뽑아주는 permutations를 이용하면 된다. permutations에 대한 설명은 아래의 문제에서도 풀었기 때문에 생략 [python] 백준 8892번 팰린드롬 문제 풀이 내가 생각한 방법은 itertools라이브러리의 permutations(순열) 함수를 이용하는 것이었다. permutations에 대한 자세한 설명은 밑에 있다. 파이썬을 파이썬답게 - 순열과 조합 - combinations, permut. begin-dev-awos.tis..
문제 풀이 n명의 사람들이 돈을 인출하는 데 걸리는 시간이 주어지고 n-1번 사람이 돈을 뽑을 때까지 n번 사람은 기다려야 해서 기다리는 시간(n-1번 사람이 돈을 뽑는 시간)까지 계산해줘야 한다. 예제 1을 아래의 그림과 같이 보면 첫째 줄에 5 (사람 인원수)가 주어지고 둘째 줄에 3 1 4 3 2 (각 사람마다 인출하는데 필요한 시간)이 주어진다. times라는 배열에 3 1 4 3 2를 담고 rs(배열)에 이전 사람이 돈을 뽑을 때까지 기다리는 시간과 본인이 인출하는데 시간을 누적하여 각 rs(배열)에 담아주면 된다. 예제에서는 5명이 있기 때문에 rs(배열)에도 5개의 값이 있을 것이다. 설명을 하기 위해서 rs(배열)을 썼지만 그냥 tot과 같은 변수 하나에 값을 누적시켜주면 된다. 하지만 여..
문제 풀이 집합 같은 경우 set() 함수를 이용하면 쉽게 풀 수 있다. set() 함수는 중복을 허용하지 않으므로 수식으로 나타내 보면 아래의 수식처럼 나타낼 수 있다. A U B - (A ∩ B) 합집합 같은경우 union 함수, 교집합 같은 경우 intersection 함수를 사용하면 된다. 완성된 코드!!👍😊 n, m = map(int, input().split()) A = set(map(int, input().split())) B = set(map(int, input().split())) print(len(A.union(B) - A.intersection(B)))
문제 풀이 이해가 잘 안 될 때 직접 그림을 그려보는 것도 좋은 방법이다. 1열 : N, 2열 : 0이 등장하는 횟수, 3열 : 1이 등장하는 횟수라고 보면 될 것 같다. 이렇게 쓰고보니 2열과 3열에서 규칙이 보여 아래와 같이 작성해봤다. 1의 개수처럼 0도 피보나치로 가능하였기 때문에 아래의 코드처럼 돌렸지만 시간 초과가 나왔다. import sys def fibonacci0(n): if n == 0: return 1 elif n == 1: return 0 else: return fibonacci0(n-1)+fibonacci0(n-2) def fibonacci1(n): if n == 0: return 0 elif n == 1: return 1 else: return fibonacci1(n-1)+fib..