728x90

뭔가 그리디스럽지 않다고 생각한 문제이다. 처음에는 당연히 ' . ' 를 기준으로 split 해야하는줄 알고 많이 헤맸던거 같다

(뭐 안헤매는 문제가 적지는 않지만...)

 

 

그렇게 삽질에 삽질을 더해가고

 그러다 문득 split 하지 않고 문자열로 생각해 보면 쉽지 않을까 라는 생각이 들었고 

그 결과 단 몇줄만의 코드로 풀이가 가능하다는 것을 알았다.


 

이 문제의 핵심은 replace의 정확한 사용법을 아느냐  이다.

 

만약 'XXXXX' 이렇게 연속된 5개의 X가 있을때 replace('XXXX', 'AAAA')를 해준다면 replace는 각각의 인덱스,

즉 0의 위치부터 순서대로 'XXXX'를 찾아내어 그것을 명령대로 바꿔준후 다시 'XXXX'를 찾아나선다

즉 'AAAAX' 이렇게 변한다는 뜻이다.

그동안 replace를 공부할때는 [ 'apple', 'banana' ] 이런식의 리스트안의 단어들만 바꾸는 식의 학습을 하다 보니 

정확히 replace가 어떤 원리로 실행되는지 잘 몰랐던 것 같다.


po = input()
#replace는 왼쪽부터 해당하는 문자열을 찾아서 치환
po = po.replace('XXXX','AAAA') #왼쪽부터 XXXX를 찾아서 AAAA로 치환
po = po.replace('XX','BB') #왼쪽부터 XX를 찾아서 BB로 치환

if 'X' in po:
    print(-1) #치환하고 남은 x에 X가 남아있다면 X보드판을 폴리오미노로 덮을수 없는것
else:
    print(po)
복사했습니다!