분류 전체보기 14

[백준] 연산자 끼워넣기 - 14888

14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 백트래킹 문제이다. 첫 풀이에서는, 연산자들의 남은 사용 횟수를 dict로 만들어서 함수의 인자로 copy하여 넘겨주었다. 정답은 맞았지만 상위 등수의 소스코드와 비교해보니 실행시간이 약 2.5배정도 차이가 났다... 이 문제에서 배운 것들 copy() 사용을 지양하자. *args를 이용한 함수로의 매개변수 전달법 코드를 수정할 때, 복붙한 후 제대로 수정했는지 확인하자. 대충 확인해서 틀리면 시간이 많이 잡..

코딩 문제풀이 2021.04.30

[백준] 이진수 - 3460

3460번: 이진수 양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다. www.acmicpc.net 2진수 문자열을 구하는 문제이다. 파이썬3 소스코드 def solution(): T = int(input()) for _ in range(T): n_bin = bin(int(input()))[2:][::-1] answer = [] # 1의 위치 찾기 for i, b in enumerate(n_bin): if b == "1": answer.append(i) print(*answer) solution()

코딩 문제풀이 2021.04.29

[백준] 약수 구하기 - 2501

2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net 기본적인 약수 구하기 문제이다. 파이썬3 소스코드 def solution(n, k): divisors = [] for i in range(1, (n//2)+1): if n % i == 0: divisors.append(i) divisors.append(n) if len(divisors) < k: print(0) else: print(divisors[k-1]) return 0 n, k = map(int, input().split()) solution(n, k)​

코딩 문제풀이 2021.04.29