L,H,W = map(int,input().split())
arr = [list(input()) for _ in range(H)]
answer = []
for i in range(L):
start_y = i*W
flag = False
for y in range(start_y,start_y+W):
for x in range(H):
if arr[x][y] != '?':
answer.append(arr[x][y])
flag = True
break
if flag:
break
else:
answer.append('?')
print(''.join(answer))

 

string = input()
duck = 'quack'
cnt = 0
result = []
answer = 0
for st in string:
flag = True
for ind in range(len(result)):
if duck[(duck.index(result[ind][-1])+1)%5] == st:
result[ind].append(st)
flag = False
break
if flag:
if st != 'q':
answer = -1
break
result.append([st])
if answer == -1:
print(answer)
else:
for i in result:
if len(i)%5 != 0:
print(-1)
break
else:
print(len(result))
S = input()
duck = {'q':0,'u':1,'a':2,'c':3,'k':4}
queue = []
answer = 0
for sound in S:
flag = True
for ind in range(len(queue)):
if (queue[ind] + 1)%5 == duck[sound]:
queue[ind] = (queue[ind] + 1)%5
flag = False
break
if flag:
if duck[sound] != 0:
answer = -1
break
queue.append(0)
if answer == -1:
print(-1)
else:
for num in queue:
if num != 4:
print(-1)
break
else:
print(len(queue))

 

T = int(input())
def check(arr):
for ind in range(len(arr)-1):
if arr[ind] == arr[ind+1][:len(arr[ind])]:
return 'NO'
return 'YES'
for _ in range(T):
N = int(input())
phone_list = [input() for _ in range(N)]
phone_list.sort()
print(check(phone_list))

 

문자열인체로 정렬을 하면, 앞에서부터 숫자가 작은순으로 정렬이 된다. 

 

이 점을 이용해, 앞에서부터 하나씩 그 다음 문자열과 앞에서부터 같은지 확인해주면 된다.

 

import sys
input = sys.stdin.readline
T = int(input())
def check(arr):
for ind in range(len(arr)-1):
if arr[ind+1].startswith(arr[ind]):
return 'NO'
return 'YES'
for _ in range(T):
N = int(input())
phone_list = [input().strip() for _ in range(N)]
phone_list.sort()
print(check(phone_list))

startswith라는 메소드를 활용해서 하는 방법도 있다.

'알고리즘 > 백준' 카테고리의 다른 글

[BOJ/백준] 11066 파일 합치기  (0) 2021.03.12
[BOJ/백준] 1300 K번째 수  (0) 2021.03.11
[BOJ/백준] 1963 소수 경로  (0) 2021.03.11
[BOJ/백준] 1504 특정한 최단 경로  (0) 2021.03.11
[BOJ/백준] 15685 드래곤 커브  (0) 2021.03.08
def solution(new_id):
answer = ''
not_string = '~!@#$%^&*()=+[{]}:?,<>/'
new_id = new_id.lower()
for item in new_id:
if item not in not_string:
answer += item
while '..' in answer:
answer = answer.replace('..','.')
if answer:
if answer[0] == '.':
answer = answer[1:] if answer != '.' else '.'
if answer[-1] == '.':
answer = answer[:-1]
if not answer:
answer = 'a'
if len(answer) >= 16:
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:-1]
while len(answer) <= 2:
answer += answer[-1]
return answer

매번 나오는 듯한 문자열 문제이다. 각 STEP에 맞춰서 진행하면 되는 문제였다.

+ Recent posts