✏️ 문제
문제 파악
이전에 붙인 테이프의 길이가
- 다음 위치까지 사용할 수 있는 지 (테이프 개수 추가 x)
- 다음 위치까지 테이프 길이가 되지 않아 새로 테이프를 붙여야 하는 지 (테이프 개수 추가 o)
조건을 잘 세워 코드를 짜야하는 문제이다.
알고리즘
- 그리디 알고리즘
- 구현
코드
- 실패한 코드
s = input()
ary = list(map(str, s.split('.')))
x_length = 0
for i in range(len(ary)):
x_length += len(ary[i]) # X의 전체 개수가 홀수면 -1 출력
for i in range(len(ary)):
if x_length % 2 != 0: # X 개수가 홀수면 -1 만 출력이므로 첫 조건문으로 줌
print(-1)
break
else:
length = len(ary[i])
while length != 0:
if length // 4 > 0:
print('AAAA', end='')
length -= 4
elif length // 2 > 0:
print('BB', end='')
length -= 2
if i != len(ary) - 1: # 계속 맨 끝에 .이 하나 붙어서
print('.', end='')
while이랑 for문을 두 개나 써서 그런지 예제들에 대한 답은 잘 나오지만 시간초과가 떴다..
어떻게 짜야할 지 모르겠어서 찾아보니
board = input()
board = board.replace("XXXX", "AAAA")
board = board.replace("XX", "BB")
if 'X' in board:
print(-1)
else:
print(board)
이렇게 좋은 함수가 있다니 ... 역시 아는 게 힘 ㅠㅠ 함수에 대해 더 많이 공부해야겠다 ..
'PS > 백준' 카테고리의 다른 글
[Python] 6550번 부분 문자열 (0) | 2024.08.25 |
---|---|
[Python] 1449번 수리공 항승 (0) | 2024.08.24 |
[Python] 2468번 안전 영역 (0) | 2024.08.21 |
[Python] 20551번 Sort 마스터 배지훈의 후계자 (0) | 2024.08.21 |
[Python] 5014번 스타트링크 (0) | 2024.08.20 |