본문 바로가기

전체 글

(48)
[백준 1182][파이썬] 부분수열의 합 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net from itertools import combinations import sys input = sys.stdin.readline N, S = map(int, input().split()) num = list(map(int, input().split())) count = 0 for i in range(1, N + 1): for combination in comb..
[백준 15654][파이썬] N과 M (5) https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 문제 풀이 방법은 N과 M (1)과 되게 유사하다. 다른 점은 그냥 숫자 i(혹은 i+1)를 넣는 게 아니라 i가 N개의 자연수를 담은 리스트의 인덱스로 쓰였다는 것이다. 수열 정렬을 사전순으로 하라는 조건이 있어서 리스트에 N개의 자연수를 다 담은 후에 한 번 정렬을 해주었다. import sys input = sys.stdin.readline N, M = map(int, input()..
[백준 15652][파이썬] N과 M (4) https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 이 문제 역시 N과 M (2)와 유사하다. 다른 점은 (2)에서는 for문의 범위가 그 전 수보다 1 큰 수부터 시작했는데 이 문제는 그 전 수부터 시작한다는 점이다. import sys input = sys.stdin.readline N, M = map(int, input().split()) sequence = [] def dfs(prev_num): if len(sequence) == M: p..
[백준 15651][파이썬] N과 M (3) https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 이전 문제인 N과 M (2)와 매우 유사하다. 이 문제는 중복이 허용되기 때문에 for문의 시작 숫자를 1로 하면 끝이다. 이미 숫자가 쓰였는지 신경 쓸 필요도 없다. import sys input = sys.stdin.readline N, M = map(int, input().split()) sequence = [] def dfs(): if len(sequence) == M: print(' '..
[백준 15650][파이썬] N과 M (2) https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 이전 문제인 (1)과 유사하지만 개인적으로 이게 더 쉬운 것 같다. 오름차순 정렬이라서 다음 수가 전의 수보다 크기만 하면 절대로 중복될 일이 없다. 따라서, 어떤 숫자가 sequence 안에 있는지 따로 확인해 줄 필요가 없다. 그래서 for문 범위도 헷갈리지 않게 1부터 N까지로 바꿨다. 그런데 코드를 보면 1이 들어갈 자리에 prev_num + 1이 들어가 있는 걸 볼 수 있는데 이건 오름..
[백준 15649][파이썬] N과 M (1) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net sequence가 우리가 구하려는 수열을 저장하는 리스트이다. use 리스트를 만든 이유는 sequence에 어떤 숫자가 중복해서 들어가지는 않았는지 빠르게 확인하기 위해서 만든 건데 시간이 여유로워서 그냥 sequence 안에 어떤 숫자가 있는지 없는지 그때그때마다 확인해도 상관없을 것 같다. import sys input = sys.stdin.readline N, M = map(int, in..
[백준 3190][파이썬] 뱀 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 리스트의 첫 번째 요소를 삭제할 일이 많아 리스트 대신 덱을 사용했다. 뱀과 사과의 위치를 이중 리스트에서 존재하면 1, 존재하지 않으면 0으로 나타냈다. 1) 머리가 먼저 움직이게 했는지 2) 뱀이 사과를 먹으면 그 자리의 사과가 없어지게 했는지 3) 사과의 위치를 저장할 때 input에서 1씩 뺐는지(1행 1열이 리스트에서는 0, 0이므로) 오류가 난다면 위 3개를 제대로 했는지 확인하면 될 것 같다..
[백준 11613][파이썬] ASCII Addition https://www.acmicpc.net/problem/11613 11613번: ASCII Addition Nowadays, there are smartphone applications that instantly translate text and even solve math problems if you just point your phone’s camera at them. Your job is to implement a much simpler functionality reminiscent of the past – add two integers writt www.acmicpc.net num은 문제에서 'matrices corresponding to the digits'라고 나와있는 0부터 9까지 배열을 ..