[Softeer][level2][21년 재직자 대회 예선] 비밀 메뉴 - 파이썬(Python)
https://softeer.ai/practice/info.do?idx=1&eid=623
문제
회사 식당에는 전설처럼 전해 내려오는 비밀 메뉴에 대한 소문이 있다. 소문의 내용은 대강 이러하다.
식권 자판기의 버튼을 특정 순서대로 누르고 결제를 하면, 평소와는 다른 색깔의 식권이 나온다.
이 식권을 배식대에 제출하면, 어떤 비밀 메뉴를 받을 수 있다는 것이다. 물론 이를 실제로 본 사람은 아무도 없어서, 어떤 메뉴가 나오는지는 커녕 눌러야 하는 버튼의 순서조차 알려져 있지 않다.
주방장인 당신은 이 소문의 실체를 알고 있다. 이는 분명한 사실이다!
정해진 버튼 조작법을 사용하면 비밀 메뉴의 식권을 얻을 수 있다. 그러나 얼마 전 식권 자판기가 고장으로 교체되면서, 새 자판기에서는 비밀 메뉴 조작법이 작동하지 않게 되었다.
당신은 프로그래밍 실력을 살려, 사용자의 버튼 조작 중 비밀 메뉴 조작법이 포함되어 있는지를 판단하는 회로를 추가하려 한다.
자판기에는 총 K개의 버튼이 있다. 각 버튼마다 1부터 K까지 번호가 붙어 있어서, 조작 과정은 1 이상 K 이하의 정수 여러 개로 나타낼 수 있다.
비밀 메뉴 조작법은 M개의 버튼 조작으로 이루어져 있으며, 이 순서대로 버튼을 누르면 반드시 비밀 메뉴 식권이 발매된다. 이때, 이 조작법 앞뒤로 다른 버튼 조작이 있어도 비밀 메뉴로 인정된다.
사용자가 누른 N개의 버튼 조작이 주어질 때, 사용자가 비밀 메뉴 식권을 받을 수 있는지를 확인하는 프로그램을 작성하여라.
하 너무 어렵게 생각했다가 빵점 맞았다 ㅋㅋㅋㅋㅋㅋㅋㅋ
소프티어의 채점기준을 이 문제를 통해 조금이나마 엿본 느낌...
🥲 빵점 맞은 코드...
빵점 맞을정도로 못 풀지 않았는데 화가난다.
같은 레벨2 문제들에서 생각 이상으로 처리해줘야하는 문제들이 존재해서 너무 어렵게 생각했나보다 ㅠㅠㅠㅠㅠㅠ
import sys
input = sys.stdin.readline
m,n,k = map(int,input().split())
if m > n :
print("normal")
exit()
secret_key = list(map(int,input().split()))
user_input = list(map(int,input().split()))
u = 0
while u != n:
test_u = u
if secret_key[0] == user_input[test_u]:
#for문 으로 s, test_u 증가시켜가면서 값 비교
test_u += 1
count = 1
for test_s in range(1, m):
if(secret_key[test_s] == user_input[test_u]):
test_u+= 1
count+=1
if(count == m):
print("secret")
exit()
else:
u+=1
break
else :
u+=1
print("normal")
쉽게 생각하자 최대한... 쉽게 생각하는걸 연습하자...
💻 다른 사람의 코드를 참고 후 [작성한 정답코드]
import sys
input = sys.stdin.readline
m,n,k = map(int,input().split())
if m > n :
print("normal")
exit()
secret_key = "".join(list(map(str,input().split())))
user_input = "".join(list(map(str,input().split())))
if secret_key in user_input:
print("secret")
else:
print("normal")
* join함수 : 리스트의 문자열들을 합치는 역할이라는걸 기억하자!!
https://devpouch.tistory.com/77