본문 바로가기

전체 글55

백준 10844번 : 쉬운 계단 수 (Python) 출처 : https://www.acmicpc.net/problem/10844 n = int(input()) sols = [[0] * 10 for _ in range(n+1)] sols[1] = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in range(2, n+1) : sols[i][0] = sols[i-1][1] sols[i][9] = sols[i-1][8] for j in range(1, 9) : sols[i][j] = sols[i-1][j-1] + sols[i-1][j+1] print(sum(sols[-1]) % 1000000000) k가 길이 n인 계단수일 때, 1의 자리가 0인 k의 개수는 1의 자리가 1인 길이 (n-1)인 계단수의 개수와 같다. 마찬가지로, 1의 자리가.. 2022. 12. 16.
백준 1463번 : 1로 만들기 (Python) 출처 : https://www.acmicpc.net/problem/1463 n = int(input()) sols = [0] * (n+1) for i in range(2, n+1) : # 1 빼기 sols[i] = sols[i-1] + 1 # 2로 나눌 수 있으면 i//2 비교 if i % 2 == 0 : sols[i] = min(sols[i//2] + 1, sols[i]) # 3으로 나눌 수 있으면 i//3 비교 if i % 3 == 0 : sols[i] = min(sols[i//3] + 1, sols[i]) print(sols[-1]) 이 문제는 1부터 시작해서 1을 더하거나, 2를 곱하거나, 3을 곱해서 n까지 최소 회수로 도달하는 문제와 완전히 동일하다. 주어진 n에 대해 답을 구하는 함수를 $f.. 2022. 12. 15.
백준 2468번 : 안전영역 (Python) 출처 : https://www.acmicpc.net/problem/2468 def search_safe(n, area, rain) : # 찾아낸 안전영역 그룹의 수 cnt = 0 # 영역을 탐색했는지 체크하는 배열 (탐색 했음 = 0, 아직 안했음 = 1) area_searched = [[1] * n for i in range(n)] for i in range(n) : for j in range(n) : # 아직 탐색하지 않은 안전영역 찾으면 탐색 시작 if area[i][j] > rain and area_searched[i][j] == 1 : cnt += 1 # 안전영역인지 탐색할 후보 영역의 좌표 목록 to_search = [[i, j]] # 후보 목록에 값이 남아있으면 탐색 계속 while to_s.. 2022. 12. 12.
다차원 리스트 값 바꿀 때 여러 줄이 같이 바뀐다면 다차원 리스트 값 바꿀 때 여러 줄이 같이 바뀐다면¶ 일반적으로 다차원 리스트에서 값을 변경할 때는 인덱스를 지정해 원하는 값을 넣어주면 된다. In [21]: x = [[3, 5, 6, 7], [-3, 0, 4, 5], [-9, 7, 8, 1]] print(x) [[3, 5, 6, 7], [-3, 0, 4, 5], [-9, 7, 8, 1]] In [22]: x[2][1] = 99 print(x) [[3, 5, 6, 7], [-3, 0, 4, 5], [-9, 99, 8, 1]] 그러나 모든 값이 0인 3 * 4 리스트를 다음과 생성하니 하나의 값만 바꿨는데도 여러 줄의 값이 한꺼번에 바뀐 것을 볼 수 있다. In : y1 = [[0] * 4] * 3 print(y1) [[0, 0, 0, 0], [0, 0.. 2022. 12. 9.