[python] 백준 15651번 N과 M (3)
알고리즘/백준2022. 3. 19. 23:47[python] 백준 15651번 N과 M (3)

문제 풀이 예제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] 백준 15650번 N과 M (2)
알고리즘/백준2022. 3. 17. 23:36[python] 백준 15650번 N과 M (2)

문제 풀이 출력의 결과가 조합의 결과와 같은 것을 알 수 있다. 조합은 뽑는 순서 상관 없이 하나로 생각하는 경우로 순열과는 반대의 개념이다. 이런 문제들은 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 완성된 코드..

[python] 백준 15649번 N과 M (1)
알고리즘/백준2022. 3. 16. 23:33[python] 백준 15649번 N과 M (1)

문제 풀이 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..

[python] 백준 11399번 ATM
알고리즘/백준2022. 3. 3. 23:55[python] 백준 11399번 ATM

문제 풀이 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과 같은 변수 하나에 값을 누적시켜주면 된다. 하지만 여..

[python] 백준 1269번 대칭 차집합
알고리즘/백준2022. 2. 4. 23:32[python] 백준 1269번 대칭 차집합

문제 풀이 집합 같은 경우 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)))

[python] 백준 1003번 피보나치 함수
알고리즘/백준2021. 12. 5. 23:25[python] 백준 1003번 피보나치 함수

문제 풀이 이해가 잘 안 될 때 직접 그림을 그려보는 것도 좋은 방법이다. 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..

image