[백준] 1343 - 폴리오미노 (Python, 숏코딩 포함)
- Programming/알고리즘
- 2022. 4. 13.
* 일반 풀이와 숏 코딩 풀이 코드
## 일반 풀이
board = input() # 문자열 입력받기
board = board.replace('XXXX', 'AAAA')
board = board.replace('XX', 'BB')
if 'X' in board:
print(-1)
else:
print(board)
## 숏코딩 풀이
result = input().replace('XXXX','AAAA').replace('XX','BB')
print(-1 if 'X' in result else result)
문제 정의
처음에 'X' , '.'으로 이루어진 보드판이 주어졌을 때, 민식이는 가능한 AAAA와 BB로 채워 사전 순으로 가장 앞서는 답을 출력한다. 만약 모두 덮을 수 없으면 -1을 출력한다.
예제 입력 및 출력
일반 풀이와 숏코딩 풀이
일반 풀이
board = input() # 문자열 입력받기
board = board.replace('XXXX', 'AAAA')
board = board.replace('XX', 'BB')
if 'X' in board:
print(-1)
else:
print(board)
board = input() 을 통해 문자열을 board에 저장합니다. board.replace('XXXX', 'AAAA') 에서는 board 문자열에서 앞에서부터 'XXXX'를 순차적으로 모두 찾아 'AAAA'로 바꿔줍니다. 이후에, board.replace('XX','BB')를 통해 앞 과정에서 변환되지 않은 모든 'XX'를 찾아 'BB'로 변환해 줍니다. 그 결과 board에 'X'가 존재한다면, 모두 덮은 게 아니므로 -1을 출력하고, 그게 아니라면 변환된 borad를 출력합니다.
* 출력
숏코딩
board = input().replace('XXXX','AAAA').replace('XX','BB')
print(-1 if 'X' in board else board)
위의 코드를 2줄로 줄여보았습니다. input() 자체가 입력받은 문자열을 반환하기 때문에 바로 replace 메소드를 사용할 수 있습니다. 또한, replace 메소드는 결과로 문자열을 반환하기 때문에 연속으로 사용할 수 있으며, 앞에 사용한 replace부터 우선순위로 적용됩니다. 출력할 때는 3항 연산을 사용하였습니다. 'X'가 board에 존재하면 -1을 출력하고, 없으면 board 자체를 출력합니다.
* 출력
3항 연산 간략 설명
참일 때 if 조건문 else 거짓일 때
조건문이 True이면 '참일 때'를 반환하고, 조건문이 False 라면 '거짓일 때'를 반환합니다.
예시)
print('참' if True else '거짓') # '참' 출력
print('참' if False else '거짓') # '거짓' 출력
삼항 연산은 그 결과를 반환하기 때문에 print() 안에 쓸 수 있습니다.
* 출력
읽어주셔서 감사합니다.
오늘도 발전하는 독자 여러분을 응원합니다.
다음에 더 유익하고 재미있는 포스팅으로 찾아오겠습니다.
'Programming > 알고리즘' 카테고리의 다른 글
[백준] 1541 - 잃어버린 괄호 (Python, 숏코딩 2가지) (0) | 2022.04.24 |
---|---|
[백준] 9012 - 괄호 (Python, 숏코딩 포함) (0) | 2022.04.19 |
[백준] 1003 - 피보나치 함수 (Python, 숏코딩 포함) (1) | 2022.04.18 |
[백준] 2800 - 괄호제거 (Python, combinations) (0) | 2022.04.01 |
[백준] (12015, 12738) - 가장 긴 증가하는 부분 수열2,3 (Python - bisect) (0) | 2022.03.26 |