목록분류 전체보기 (167)
JiSoo's Devlog
from collections import deque n = int(input()) q = deque() for i in range(1, n+1): q.append(i) while(len(q)!=1): q.popleft() q.append(q.popleft()) print(q[0]) 큐에 1부터 n까지 넣어주고 큐에 남은 숫자가 1개가 될 때까지 반복 popleft()로 제일 위의 카드 버리고 그다음 제일 위의 카드를 뽑아서 밑에 추가
m, n = map(int, input().split()) for i in range(m,n+1): if i == 1: continue for j in range(2, int(i**0.5)+1): if i % j == 0: break else: print(i) m부터 n까지 for문으로 하나씩 소수인지 확인 2 이상부터 for문으로 반복문을 돌려 0으로 나누어 떨어지는지 확인 0으로 나누어 떨어지지 않으면 출력
n, m = map(int, input().split()) a = [] for i in range(n): a.append(input()) s=[] for i in range(n-7): for j in range(m-7): fw = 0 fb = 0 for k in range(i, i+8): for l in range(j, j+8): if (k+l) % 2 == 0: if a[k][l] != 'W': fw += 1 if a[k][l] != 'B': fb += 1 else: if a[k][l] != 'B': fw += 1 if a[k][l] != 'W': fb += 1 s.append(fw) s.append(fb) print(min(s)) 8*8로 잘라야 되기 때문에 행을 i-7, 열을 j-7로 고정시켜줘야 ..
n = int(input()) na = set(map(int, input().split())) m = int(input()) ma = list(map(int, input().split())) for i in ma: if i in na: print(1) else: print(0) >>> s = set([1, 2, 3]) >>> s1 {1, 2, 3} >>> a = set("Hello") >>> a {'e', 'H', 'l', 'o'} set은 중복 허용 X, 순서 X 인덱싱으로 값을 얻을 수 없다
절대 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 함수로 오름차순 정렬