일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 12869번
- 거울 설치
- HTML 기초
- 감소하는 수
- QueryDSL 기초
- 키패드 누르기
- 수식 최대화
- SW Expert Academy
- 베스트엘범
- 빛의 경로 사이클
- 14499번
- 17144번
- 9095번
- 어른 상어
- 미세먼지 안녕!
- 1789번
- 파이썬
- 스타트 택시
- 경주로 건설
- 15686번
- 2020 카카오 인턴십
- python
- 19238번
- 1038번
- 백준 알고리즘
- 16234번
- SW ExpertAcademy
- 프로그래머스
- 보석 쇼핑
- 12865번
Archives
- Today
- Total
보물창고 블로그
삼성 SW Expert Academy 5653. [모의 SW 역량테스트] 줄기세포배양 본문
728x90
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRJ8EKe48DFAUo
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제는 위의 링크에 나와있다.
해결한 코드는 다음과 같다.
class cell:
def __init__(self,x,y,time):
# hp는 비활성에서 활성화까지 남은 시간 혹은 활성화에서 죽을 때까지 시간
self.hp=x
# ahp는 활성화하는데 걸리는 시간
self.ahp=x
# 상태 0은 없음 1은 비활성 2는 활성 3은 죽음
self.status=y
# 생성된 시간
self.time=time
def make_cell(x,y,w,t):
px=[-1,0,1,0]
py=[0,1,0,-1]
for i in range(4):
try:
if map1[x+px[i]][y+py[i]].status==0:
map1[x+px[i]][y+py[i]].status=1
map1[x+px[i]][y+py[i]].hp=w
map1[x+px[i]][y+py[i]].ahp=w
map1[x+px[i]][y+py[i]].time=t
elif map1[x+px[i]][y+py[i]].status==1 and map1[x+px[i]][y+py[i]].time==t:
if w>map1[x+px[i]][y+py[i]].hp:
map1[x+px[i]][y+py[i]].hp=w
map1[x+px[i]][y+py[i]].ahp=w
except:
continue
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
n,m,k=map(int,input().split())
t=0
map1=[[cell(0,0,0) for _ in range(m+k)]for _ in range(n+k)]
map2=[list(map(int,input().split())) for _ in range(n)]
s=k//2
for i in range(s,s+n):
for j in range(s,s+m):
if map2[i-s][j-s]!=0:
map1[i][j].status=1
map1[i][j].hp=map2[i-s][j-s]
map1[i][j].ahp=map2[i-s][j-s]
while(t<k):
t+=1
for i in range(n+k):
for j in range(m+k):
if map1[i][j].status==1 and map1[i][j].time<t:
map1[i][j].hp-=1
if map1[i][j].hp==0:
map1[i][j].status=2
map1[i][j].hp=map1[i][j].ahp
continue
elif map1[i][j].status==2:
map1[i][j].hp-=1
if map1[i][j].hp==map1[i][j].ahp-1:
make_cell(i,j,map1[i][j].ahp,t)
if map1[i][j].hp==0:
map1[i][j].status=3
count=0
for i in range(n+k):
for j in range(m+k):
if map1[i][j].status==1 or map1[i][j].status==2:
count+=1
print('#{} {}'.format(test_case,count))
'알고리즘 풀이 > SW Expert Academy' 카테고리의 다른 글
SW Expert Academy 2819 격자판의 숫자 이어 붙이기 (0) | 2020.01.16 |
---|---|
SW Expert Academy 1961 숫자 배열 회전 (0) | 2020.01.03 |
SW Expert Academy 4613 러시아 국기 같은 깃발 (0) | 2020.01.03 |
삼성 SW Expert Academy 4615 재밌는 오셀로 게임 (0) | 2020.01.02 |
삼성 SW Expert Academy 1767. [SW Test 샘플문제] 프로세서 연결 문제풀이 (0) | 2019.12.27 |
Comments