본문 바로가기

Coding test

[백준/20125/파이썬] 쿠키의 신체측정


소스코드

N = int(input())
cookie = []
for _ in range (N):
  cookie.append(input())

heart = [0,0]
body = [0,0,-2,-1,-1]
def head(i,j):
  if cookie[i][j] =='*' and cookie[i][j-1]=='_':
    heart[0] = i+1
    heart[1] = j

for i in range(N):
  for j in range(N):
    if not heart[0]:
      head(i,j)
    #왼팔
    if i == heart[0] and cookie[i][j] =="*" and j < heart[1]:
      body[0] += 1
    #오른팔
    if i == heart[0] and cookie[i][j] =="*" and j > heart[1]:
      body[1] += 1
    #허리
    if j == heart[1] and cookie[i][j] =="*":
      body[2] += 1
    #왼쪽다리
    if j == heart[1]-1 and cookie[i][j] =="*":
      body[3] += 1
    #오른쪽다리
    if j == heart[1]+1 and cookie[i][j] =="*":
      body[4] += 1
for i in heart:
  print(i+1,end = ' ')
print()
for j in body:
  print(j, end  = ' ')

알고리즘

머리

머리는 함수로 선언을 하여 처음으로 _*이 나타나는 부분이 머리이기 때문에 머리로 선언을 해주고 다음에는 선언 안되도록 if 문으로 분기했다.

왼팔

왼팔은 심장 기준으로 왼쪽의 쭉 * 이 나타나기 때문에 횟수만큼 더했고

오른팔

오른팔도 마찬가지이다.

허리

허리는 심장기준 아래쪽으로 *이 나오고

왼쪽다리

왼쪽다리는 허리 i-1 에서 아래쪽으로 *

오른쪽다리

허리 i +1 에서 아래쪽으로 * 이다.

 

어렵지 않은 구현 문제였다.