Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 인턴 후기
- restapi
- 동읍면 DB
- 행정지역 DB
- spring
- Database
- react
- Django
- jsp
- PyAmdecoder
- 정보보호병 후기
- 3단계 지역 DB
- 인턴 지원
- SessionAttribute
- DBMS
- 소프트웨어 개발보안 경진대회
- mysql
- JSTL
- reversing.kr
- webhacking 처음
- 메모리 포랜식
- frontend
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- riceteacatpanda
- 네이버 인턴
- EER
- Forensic 절차
- Layered Architecture
- 방명록 만들기
- 소개딩
Archives
- Today
- Total
웹찢남
[백준 1516 게임 개발 문제] PYTHON 본문
이번 문제는 코드를 조금 복잡하게 구현했다. 더 좋은 방식이 있으리라 생각한다.
우선 while 문을 돌려 모든 건물을 지으면 루프가 끝나도록 했다.
그 후 for 문을 통해 건물 리스트를 계속 돈다.
이때 del_list와 build_list(dictionary)를 만들어 건물이 완공될 경우 각각 값을 넣는다.
del_list는 반복을 줄이기 위해 추가하여 for 문의 i 가 del_list 내에 있는지 확인한다.
build_list는 건물을 짓기 위해 먼저 지어져야 하는 건물의 번호들을 확인 할 수 있다.
필자는 이 부분을 set의 issubset 기능을 사용하여 구현하였다.
마지막으로 건물들이 모두 완공 된 후 build_list를 key를 기준으로 정렬하여 print한다.
from sys import stdin
t=int(input())
dic={}
gd=[[0]]
for _ in range(t):
gd.append(list(map(int, stdin.readline().split())))
build_list={}
del_list=[]
while(len(del_list)!=t):
lengd=len(gd)
for i in range(1,lengd):
if i in del_list:
pass
else:
if( len(gd[i]) == 2):
build_list[i]=gd[i][0]
del_list.append(i)
elif( set(gd[i][1:-1]).issubset(set(build_list.keys()))):
tmp_list=[]
for tmp in gd[i][1:-1]:
tmp_list.append(build_list[tmp])
build_list[i]=max(tmp_list)+gd[i][0]
del_list.append(i)
build_list = sorted(build_list.items(), key=(lambda x: x[0]))
for i in build_list:
print(i[1])
'백준 Algorithm' 카테고리의 다른 글
[백준 1110 더하기 사이클 문제] PYTHON (0) | 2021.04.29 |
---|---|
[프로그래머스 42579 베스트 앨범 문제] PYTHON (0) | 2021.04.24 |
[백준 1339 단어 수학 문제] PYTHON (0) | 2021.04.17 |
[백준 10162 전자레인지 문제] PYTHON (0) | 2021.04.17 |
[백준 1946 신입 사원 문제] PYTHON (0) | 2021.04.17 |
Comments