본문 바로가기

코딩테스트/Python

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

문제


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

 

1343번: 폴리오미노

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

www.acmicpc.net

 

 

 

풀이


ss = input().split('.') # .으로 나눠줌
sol_str = ''
for x in ss:
    if len(x) % 2 == 1: # 홀수면 덮을 수 없음
        print(-1)
        break
    while len(x) >= 4: # 4보다 크면 AAAA 덮기
        sol_str+='AAAA'
        x = x[4:]
    if len(x) == 2: # 2가 남았으면 BB 덮기
        sol_str+='BB'
        x = x[2:]
    sol_str+='.' # 나눠준 . 붙이기
else:
    print(sol_str[:-1]) # 성공이면 마지막 . 제외하고 출력

 

  1. 입력받은 문자열을 . 으로 나눠준다.
  2. 짝수일때만 덮을 수 있으므로 홀수일때는 -1 출력
  3. 4 이상일때 동안 AAAA 덮기
  4. 2가 남았으면 BB 덮기
  5. 나눠준 . 붙이기
  6. 성공이면 마지막 . 제외하고 출력

 

 

다른사람 풀이

ss = input()
ss = ss.replace('XXXX','AAAA')
ss = ss.replace('XX','BB')

if 'X' in ss:
    print(-1)
else:
    print(ss)

replace 로 치환해서 X가 남아있으면 -1 출력, 없으면 치환한 문자열을 출력해준다.

 

 

 

 

 

 

// 너무 돌아돌아 풀었다.. ㅠㅠ