본문 바로가기
코딩테스트

[Python] 백준 - 20125번 : 쿠키의 신체측정

by 박매트 2024. 5. 22.

https://www.acmicpc.net/problem/20125

 

n = int(input())

result = []
answer = []

for _ in range(n):
    div = []
    li = input()
    for i,v in enumerate (li):
        if v=='*':
            div.append(i)
    if len(div) >0:
        result.append(div)



answer.append(result[1].index(result[0][0]))
answer.append(len(result[1])-result[1].index(result[0][0])-1)

cnt = 0

for i in result[2:]:
    if len(i)>1:
        answer.append(cnt)
        l, r = i[0], i[1]
        
        right = 0
        left = 0
        for leg in result[2+cnt:]:
            if len(leg) > 1:
                right+=1
                left+=1
            else:
                if leg[0]==l:
                    left+=1
                else:
                    right+=1
                    
        answer.append(left)
        answer.append(right)
        break
    else:
        cnt+=1
for i in answer:
    print(i,end=" ")

 

테스트 예제는 맞았는데, 전체적으로는 틀렸다고 나온다.. 왜지?

문제를 풀다가, 꼼수를 부려서 해보려고 했는데 그게 안됐다.

 

우선 나는 

각 행마다 *가 있는 index를 담은 리스트를 만들었다.

처음에 머리, 허리, 팔, 다리 가 있을테니..

머리, 팔까지는 0번째(머리), 1번째(팔) 로 구할 수 있을 것 같았고

 

허리부터는 어짜피 너비가 1이니까 길이가 1일 때를 count를 해서 허리라고 하고,

길이가 2가 되는 순간 다리 부분이라고 생각 되어서, 그 때 l, r 값을 정해두고 왼쪽 다리, 오른쪽 다리를 count하려고 했다.

하하 그러나 틀린 답.

 

다른 사람 답

이런 문제를 빡구현 문제라고 하는 건가?

머리, 몸통, 허리, 다리 순으로 쪼개서 함수를 만든 후, 하나하나 count하는 풀이가 많았다.