반응형
본론으로 가겠다
for i in range(int(input())):
a=int(input())
b=int(input())
e=[]
f=[]
for c in range(b):
for d in range(a+1):
if c==0:
e.append(1)
elif c%2==0:
if d==0:
e.clear()
e.append(c+1)
continue
e.append(f[d]+e[d-1])
elif c%2==1:
if d==0:
f.clear()
f.append(c+1)
continue
f.append(e[d]+f[d-1])
if b%2==1:
print(e[a])
else:
print(f[a])
나는 이문제를 행기준으로 생각해서 풀었다.
즉 세로 한줄씩 위로 쌓아 갈려고 했다. 내가 찾은 규칙은
1 2
1 2
아파트 층과 호수가 이렇게 있을때 2층 2호의 값은 2층 1호 값+ 1층 2호의 값이여서 대각선을 더하게끔 만들었다. 이때 전 라인의 값이 필요해서 홀 수 라인에는 e[], 짝수라인에는 f[]리스트를 설정해 값을 저장해 계산에 이용했다.
T = int(input())
for _ in range(T):
k = int(input())
n = int(input())
P = [i for i in range(1, n+1)]
for _ in range(k):
for j in range(1, n):
P[j] += P[j-1]
print(P[-1])
다른 고수님의 풀이를 보니 역시 깔끔했다. 내가 행 기준으로 생각을 했다면 이분은 열을 기준으로 생각했다. 이것이 더 효율적인 이유는 문제의 결대로 밑에 층 호수들의 값을 더하면 원하는 값이 나와, 굳이 나처럼 다른 라인들까지 끌어 들일 필요가 없었다.
그래서 리스트를 만들어 층수 만큼 자기 호수들 값을 현재 값에 더해가면서 목표 층의 호수값을 -1로 반환 할 수 있다.
코드가 길어지고 하는 이유를 생각해 봤을때 너무 쓸떼없는 부분까지 구현을 해가면서 어렵게 짜는게 아닌가 생각하기도 한다. 그만큼 아직 문제에 숙달 되지 않아서 그런거 같기도 하다.
많이 풀어서 숙련되고 싶다.
반응형
'알고리즘 문제들 으악 > 백준' 카테고리의 다른 글
[python]1929번, 리스트 그만 쓰고싶다 (0) | 2022.04.03 |
---|---|
[python]2839번, else의 새로운 면모 (0) | 2022.04.02 |
[python]2869번, 수학잘하고 싶다 (0) | 2022.03.31 |
[python]1316번, key=word.find 알아냈다. (0) | 2022.03.27 |
[python]1157,5622번 무지성의 정점 (0) | 2022.03.26 |