반응형
1) 사이트
2) 문제
대략 4층 4호까지 있는 집에는 아래와 같은 인수가 살고 있다고 생각하면 된다.
1명 | 1+4=5명 | 1+4+10=15명 | 1+4+10+20=35명 |
1명 | 1+3=4명 | 1+3+6=10명 | 1+3+6+10=20명 |
1명 | 1+2명 = 3명 | 1+2+3=6명 | 1+2+3+4=10명 |
1명 | 2명 | 3명 | 4명 |
이걸 보면서 등차수열 계차수열 별 수를 다 생각해봤는데, 생각해보니 1초면 웬만한 반복문을 돌려도 빠르게 도출될 것 같아
1) 입력받은 층과 호수만큼 이중 포문을 돌려 리스트를 채워준다.
2) 리스트 중 입력받은 층과 호수에 값만 불러온다.
이런 식으로 해보기로 했다.
3) 파이썬 코드
apartment=[[0]*1000 for _ in range (1000)]
test_case=int(input())
for test in range(0, test_case):
k_floor=int(input())
n_ho=int(input())
for floor in range(0, k_floor+1):
for ho in range(0, n_ho+1):
if(floor==0):
apartment[floor][ho]=ho
else:
for i in range(0,ho+1):
apartment[floor][ho]=apartment[floor][ho]+apartment[floor-1][i]
print(apartment[k_floor][n_ho])
apartment=[[0]*1000 for _ in range (1000)]
3-1) 선수 지식
파이썬 코드를 이해하기 위해 알아야 할 선수 지식이 있습니다.
1. 이중 for문 0으로 초기화 시키기 (N행XM열의 경우)
-> 변수=[[0]*M for _ in range(N)]
3-2) 설명
1. 사용할 변수를 선언 및 초기화 해줍니다.
apartment=[[0]*1000 for _ in range (1000)]
2. 몇 개의 테스트를 진행할 것인지 입력 받습니다.
test_case=int(input())
3. 테스트마다 층과 호수를 받아줍니다.
for test in range(0, test_case):
k_floor=int(input())
n_ho=int(input())
4. 입력 받은 층과 호수에 맞게 덧셈을 이용해 명수를 채워줍니다. (단, 0층은 호수만큼의 인원수를 배치합니다.)
for floor in range(0, k_floor+1):
for ho in range(0, n_ho+1):
if(floor==0):
apartment[floor][ho]=ho
else:
for i in range(0,ho+1):
apartment[floor][ho]=apartment[floor][ho]+apartment[floor-1][i]
5. 결과값을 출력합니다.
print(apartment[k_floor][n_ho])
6. 다음 테스트를 위해 이중 리스트를 초기화 시킵니다.
apartment=[[0]*1000 for _ in range (1000)]
4) c언어
아직~
궁금한 점이나 공유할 정보가 있다면 댓글로 남겨주세요 *^^*
끝!
반응형
'알고리즘 > 백준' 카테고리의 다른 글
10757번 큰 수 A+B (0) | 2021.06.06 |
---|---|
2839번 설탕 배달 (0) | 2021.06.06 |
10250번 ACM 호텔 (0) | 2021.06.02 |
2869번 달팽이는 올라가고 싶다 (0) | 2021.05.31 |
1193번 분수찾기 (0) | 2021.05.30 |