[ BOJ / Python ] 10709번 기상캐스터

황승환·2021년 12월 15일
0

Python

목록 보기
50/498

이번 문제는 정답 배열에 담을 임시 배열을 -1로 채운 뒤에 모든 문자열을 검사하며 c가 나올 경우 해당 원소를 0으로 갱신시키고 c다음의 모든 원소를 이전 원소+1의 값으로 갱신시킨다. 하나의 문자열을 검사하고 나면 임시 배열을 정답 배열에 담아 해결하였다.

  • 남북에 해당하는 h와 동서에 해당하는 w를 입력받는다.
  • 입력받는 문자열을 저장하는 sky 배열을 선언한다.
  • 정답을 담는 answer 배열을 선언한다.
  • 0부터 h까지 반복하는 i에 대한 for문을 돌린다.
    -> sky에 문자열을 입력받는다.
  • 0부터 h까지 반복하는 i에 대한 for문을 돌린다.
    -> 정답을 구하기 위해 사용할 임시 배열 tmp에 -1을 w만큼 담는다.
    -> 0부터 w까지 반복하는 j에 대한 for문을 돌린다.
    --> sky[i][j]가 c일 경우,
    ---> tmp[j]를 0으로 갱신시킨다.
    ---> j+1부터 w까지 반복하는 k에 대한 for문을 돌린다.
    ----> tmp[k]를 tmp[k-1]+1의 값으로 갱신한다.
    -> answer에 tmp배열을 담는다.
  • 0부터 h까지 반복하는 i에 대한 for문을 돌린다.
    -> 0부터 w까지 반복하는 j에 대한 for문을 돌린다.
    --> 만약 j가 w-1과 같을 경우 answer[i][j]를 출력하고 줄을 바꿔준다.
    --> 그 외에는 answer[i][j]를 출력하고 줄바꿈 대신 공백을 넣는다.

Code

h, w=map(int, input().split())
sky=[]
answer=[]
for i in range(h):
    sky.append(str(input()))
for i in range(h):
    tmp=[-1]*w
    for j in range(w):
        if sky[i][j]=='c':
            tmp[j]=0
            for k in range(j+1, w):
                tmp[k]=tmp[k-1]+1
    answer.append(tmp)
for i in range(h):
    for j in range(w):
        if j==w-1:
            print(answer[i][j])
        else:
            print(answer[i][j], end=" ")

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글