본문 바로가기

백준 write-up/정렬 & 그리디

[백준] 폴리오미노 : 1343번 - Python

728x90
반응형

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

 

1343번: 폴리오미노

첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.

www.acmicpc.net

 

 

 

문제를 풀면서 몰랐던 개념

 

- replace 함수로 따로 떨어져있는 문자열이 아니라 붙어있는 것도 바꿀 수 있다는 것을 알았다...

ex) 내가 생각한 replace 함수 기능: "one2ye, one2ye, 20s" 에서 "20s"를 "seonho"로 바꿀 때 쓸 수 있다. 즉, 문자열이 리스트처럼 분리되어있을 때만 사용가능하다고 생각했다.

"one2yeLoves20s" -> "20s"를 "Seonho"로 바꾸는 것도 할 수 있음!

N = "one2yeLoves20s"

N = N.replace("20s", "Seonho")
print(N)


# 출력결과
>>> one2yeLovesSeonho

 

 

 

문제의 접근 방법

 

- replace 함수 사용해보기

- 입력된 X의 개수가 홀수이면 덮을 수 없다 or 덮은 후의 문자열에 X가 하나라도 있으면 덮을 수 없다

 

 

 

내가 막혔던 부분

 

- replace 함수의 사용법

- 덮은 후의 문자열에 X가 홀수 개가 있으면 '-1'을 출력해야 한다고 생각함 => 처음에 입력받은 문자열로는 X의 개수가 홀수이면 안된다는 것으로 판별할 수 있지만, 이미 덮은 후에는 X의 존재여부가 포인트이지 그 개수는 무의미하다!

 

 

 

문제 풀이 방법

 

보드판 N 값 입력받기 -> 입력받은 문자열 N을 "XXXX"는 "AAAA"로, "XX"는 "BB"로 바꾸어서 다시 N에 저장해주기 -> 만약 덮고난 후 문자열 N에 "X"가 하나라도 있으면 덮을 수 없다는 뜻이므로 '-1' 출력하기 -> 그게 아니라면 N 출력해주기!

 

 

 

소스코드

N = input()

N = N.replace("XXXX", "AAAA")
N = N.replace("XX", "BB")

if N.count('X') >= 1:
    print('-1')
else:
    print(N)
728x90
반응형