핵심 포인트
활용 방법
오늘 풀었던 백준 문제이고 처음에 리스트로만 풀었었다가
시간초과가 나서, 시간 복잡도가 1인 set 함수로 바꿨더니 통과가 되었다.
import sys
input = sys.stdin.readline
N=int(input())
cards=set(input().split())
M=int(input())
ans=input().split()
for i in range(M):
if ans[i] in cards:
ans[i]="1"
else:
ans[i]="0"
print(*ans)
프로그래머스 기출문제 중 하나였다.
첫번째 바보짓: 테스트 케이스 ext라는 변수를 재사용하려다가 for문이라는 걸 까먹고
ext가 덮어씌워져도 괜찮다고 착각을 했다.
이렇게되면 첫번째 for문에 덮어씌워진 값이 두번째 for문 부터는 모든 if 문 자체에 들어가지 않아 계속 같은 값만 나오게 된다..
두번째 바보짓: 문제 제한 사항 중

이렇게 써져있는 걸 못봐서 부랴부랴 4가지 경우에 대한 if 문을 만들어주었고, ext는 date 고정인 걸로 착각해서 이것도 if 문으로 만들어주니까 통과가 되었다.
data=[[1,20300104,100,80],[2,20300804,847,37],[3,20300401,10,8]]
# 이렇게 되면 ext 자체가 정수값으로 덮어씌워져서 if문 자체가 안돈다.
# 그래서 새로운 변수에 data값을 할당해줘야한다.
def solution(data, ext, val_ext, sort_by):
answer = []
for i in range(len(data)):
if ext=="remain":
ext = data[i][3]
elif ext=="maximum":
ext = data[i][2]
elif ext=="date":
ext = data[i][1]
elif ext=="code":
ext = data[i][0]
print(ext)
if ext <val_ext:
answer.append(data[i])
if sort_by=="remain":
answer = sorted(answer,key=lambda x:x[3])
elif sort_by=="maximum":
answer = sorted(answer,key=lambda x:x[2])
elif sort_by=="date":
answer = sorted(answer,key=lambda x:x[1])
elif sort_by=="code":
answer = sorted(answer,key=lambda x:x[0])
return answer
print(solution(data,"date",20300501,"remain"))