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

2023. 8. 23. 00:09·코딩테스트/백준[Python]

문제


 

1343번: 폴리오미노

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

www.acmicpc.net

코드


My answer

board=input()
answer=[]

board_list=board.split('.')
for i in board_list:
    if(len(i)%2==1):
        answer=['-1','.']
        break
    else:
        if(len(i)%4==0):
            answer.append('A'*len(i))
        elif(len(i)%4>1):
            answer.append('A'*(len(i)//4*4))
            answer.append('B'*(len(i)%4))
        else:
            answer.append('B'*len(i))
    answer.append('.')
answer=''.join(answer)
print(answer[:-1])
import sys
input=sys.stdin.readline

board=input().rstrip()

for i in range(len(board)):
    if(board[i]=='.'):
        continue
    elif(board[i:i+4]=='XXXX'):
        board=board[:i]+'AAAA'+board[i+4:]
    elif(board[i:i+2]=='XX'):
        board=board[:i]+'BB'+board[i+2:]
if('X' in board):
    print(-1)
else:
    print(board)

 

Another answer

a=input().replace('X'*4,'A'*4).replace('XX','BB')
print([a,-1]['X'in a])

풀이


그리디 문제로, 4개짜리는 전부 AAAA로 바꾸고, 이후 2개짜리를 B로 바꾸면 된다.

내 풀이 1번: '.'으로 끊은 리스트를 만들고, 각 리스트를 돌면서 홀수개면 변환이 불가하므로 종료하고, 4로 나눠떨어지면 A로 바꾸고, 4로 나눠지는데 나눠떨어지지 않으면 A,B를 섞고, 2로 나눠떨어지면 B로 바꿔줌. 마지막에 바꿔준 리스트 사이사이 원래 '.'을 추가한 후 반환

내 풀이 2번: 앞에서부터 차례대로 진행 원래 리스트를 변환하는 방식으로 4개 붙어있으면 A로, 2개붙어있으면 B로 '.'이면 패스.

다른 풀이: replace를 연속으로 써줘서 한번에 진행

마지막 코드 [a,-1]['X' in a] 가 신기했음. if문을 적지않고 bool형 인덱싱 반환 방법 

728x90

'코딩테스트 > 백준[Python]' 카테고리의 다른 글

[Python] 백준 #2828 - 사과 담기 게임  (0) 2023.08.23
[Python] 백준 #14916- 거스름돈  (0) 2023.08.23
[Python] 백준 #15724 - 주지수[try_again]-ing  (0) 2022.03.02
[Python] 백준 #18115 - 카드 놓기[try_again]  (0) 2022.03.02
[Python] 백준 #9375 - 패션왕 신해빈  (0) 2022.03.01
'코딩테스트/백준[Python]' 카테고리의 다른 글
  • [Python] 백준 #2828 - 사과 담기 게임
  • [Python] 백준 #14916- 거스름돈
  • [Python] 백준 #15724 - 주지수[try_again]-ing
  • [Python] 백준 #18115 - 카드 놓기[try_again]
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (481)
      • 알쓸신잡 (88)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Blog

    • 🏠 Home

    ✏️글쓰기
    💻 관리

    Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    dp
    백준
    DFS
    파이썬
    이분탐색
    BFS
    그리디
    나동빈
    이코테
    이것이취업을위한코딩테스트다
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상단으로

티스토리툴바