목록2024/01/11 (7)
JiSoo's Devlog
절대 state를 직접적으로 수정하지 않고 항상 수정하는 함수를 사용한다 food = [1, 2, 3, 4] [6, ...food] > [6, 1, 2, 3, 4] setToDos((currentArray) => [toDo, ...currentArray]); 수정하는 함수를 사용할 때 2가지 옵션이 있다 하나는 setToDo("") 이런 식으로 이 값은 우리가 저장한 데이터를 가지고 있다 다른 하나는 함수를 보내는 방법 map()은 괄호 안에 함수를 넣을 수 있는데 이 함수는 array의 모든 item에 대해 실행될 것이다 거기서 무엇을 return하던지 간에 그 return 한 값이 새로운 array에 들어가 있게 될 것이다 map은 함수의 첫번째 인자가 진행되고 있는 순서에 맞는 item이다 {toD..
import sys n = int(sys.stdin.readline()) s = [] for i in range(n): l = sys.stdin.readline().split() if l[0] == "push": s.append(l[1]) elif l[0] == "pop": if len(s) == 0: print(-1) else: print(s.pop()) elif l[0] == 'size': print(len(s)) elif l[0] == 'empty': if len(s) == 0: print(1) else: print(0) elif l[0] == 'top': if len(s) == 0: print(-1) else: print(s[-1]) 시간 단축을 위해 sys.stdin.readline() 사용
from collections import Counter n = int(input()) nl = list(map(int,input().split())) m = int(input()) ml = list(map(int,input().split())) c = Counter(nl) for i in range(len(ml)): if ml[i] in c: print(c[ml[i]], end=' ') else: print(0, end=' ') 파이썬 내장 모듈 Counter 사용 Counter는 리스트를 값으로 주면 해당 원소가 몇 번 등장했는지 빈도수를 딕셔너리 형태로 반환 이분탐색, 해쉬 알고리즘 등의 방식도 사용 가능
n = int(input()) for i in range(n): l = list(input()) sum = 0 for i in l: if i == "(": sum += 1 elif i == ")": sum -= 1 if sum 0: print("NO") elif sum == 0: print("YES") "("가 나오면 +1 ")"가 나오면 -1 sum이 0이 되면 된다 for문 안의 if문에서 sum이 0보다 작아질 때, ")"가 먼저 나와 -1이 되면 break sum이 0보다 크다면 "(" 가 더 있는 거고 sum이 0이면 "YES"
n = int(input()) l = [] for i in range(n): a, n = map(str, input().split()) a = int(a) l.append((a, n)) l.sort(key = lambda x : x[0]) # (age, name) 에서 age만 비교 for i in l: print(i[0], i[1]) lambda 함수를 사용해 두 요소 중 첫 번째 요소에 대해서만 정렬하도록 했다 sort 함수로 오름차순 정렬
n = int(input()) m = [] for i in range(n): m.append(int(input())) k = sorted(m) for i in k: print(i) pypy3으로 해야 시간 초과가 안 뜬다 리스트에 n개의 숫자들 넣고 sorted로 오름차순 정렬 for i in reversed(m): print(i) 이렇게 reversed로 뒤집어서 바로 출력해도 된다
n, m = map(int, input().split()) sum = 0 a = list(map(int, input().split())) b = [] for i in range(n): for j in range(i+1,n): for k in range(j+1, n): t = a[i]+a[j]+a[k] if t > m: continue else: b.append(t) print(max(b)) 카드 3개를 골라 합을 구해야 하니까 중첩 for문을 사용해 모든 경우의 수를 생각한다 m을 넘어가면 계속해서 합을 다시 구하고 넘지 않는다면 새로운 리스트 b에 저장하게 했다