https://www.softeer.ai/practice/info.do?idx=1&eid=623
문제가 복잡해보이지만 리스트 슬라이싱을 통해 비교하고 조건에 맞는다면 "secret" 을 출력해주면 된다.
주의할 점은, for문 돌릴 때 N-M+1 까지 돌려야 한다는 점? 처음에 N-M 까지라고 생각해서 오답처리 되었다..
그리고, 한번 출력 이후로 굳이 확인할 필요없으면 exit() 으로 프로그램 종료를 하는식으로 작성했다.
소프티어 공식 풀이에서는 flag 주고 flag보고 출력을 결정하는 방식으로 풀었다.
<내 코드>
import sys
input = sys.stdin.readline
M, N, K = map(int, input().split())
S = list(map(int, input().split()))
T = list(map(int, input().split()))
for i in range(N-M+1):
# print("i: ", i)
if S == T[i:i+M]:
print("secret")
exit(0)
print("normal")
<소프티어 공식 풀이>
m, n, k = map(int, input().split())
M = input().split()
N = input().split()
secret = False
for i in range(n-m+1):
if M==N[i:i+m]:
secret = True
break
if secret == True:
print('secret')
else:
print('normal')
C에서의 메모리 자원회수 때문에 exit 시스템 콜 하다보니, 파이썬에서도 습관이 남아버렸다.
다른 사람의 풀이에서는 .join 을 통해 리스트를 문자열로 만든다음 존재하는지 체크하는 과정을 거쳤다.
'Algorithm > Softeer' 카테고리의 다른 글
[Softeer / Level2] 바이러스 (0) | 2023.10.07 |
---|---|
[Softeer / Level2] [21년 재직자 대회 예선] 전광판 (0) | 2023.10.06 |
[Softeer / Level2] 지도 자동 구축 (1) | 2023.10.04 |
[Softeer / Level2] 장애물 인식 프로그램 (1) | 2023.10.03 |
[Softeer / Level2] 8단 변속기 (1) | 2023.10.02 |