Algorithm/Softeer
[Softeer / Level2] [21년 재직자 대회 예선]비밀 메뉴
개복취
2023. 10. 5. 22:43
https://www.softeer.ai/practice/info.do?idx=1&eid=623
Softeer
연습문제를 담을 Set을 선택해주세요. 취소 확인
www.softeer.ai
문제가 복잡해보이지만 리스트 슬라이싱을 통해 비교하고 조건에 맞는다면 "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 을 통해 리스트를 문자열로 만든다음 존재하는지 체크하는 과정을 거쳤다.