목록전체 글 (170)
JiSoo's Devlog

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에 저장하게 했다

n = int(input()) l = [] for i in range(n): [x, y] = map(int, input().split()) l.append([x, y]) sa = sorted(l) for i in range(n): print(sa[i][0], sa[i][1]) 리스트 안에 있는 리스트 인덱싱 a = [1, 2, ['a', 'b', ['life', 'is']]] 이 리스트에서 lift 문자를 꺼내고 싶다면 a[2][2][0] 리스트에 [a, b]을 추가시켜 주기 때문에 [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]] 이렇게 나온다 이 리스트를 sorted 함수로 정렬시켜주고 정렬해 준 리스트를 for문으로 출력만 해주면 끝

from collections import deque n, k = map(int, input().split()) a = deque() for i in range(n): a.append(i) l = [] print("") 3번 제거하고 그 다음은 4부터 3번째 제거 큐 자료구조 k번째 완전히 제거되고 k-1번째까지의 숫자들은 제거된 후 다시 큐의 뒤로 돌아온다 deque 사용 deque는 앞뒤로 요소를 추가하고 삭제할 수 있는 자료구조 rotate()를 사용하면 오른쪽으로 이동 ex) rotate(1) 하면 제일 뒤에 있던게 제일 앞으로 이동 rotate(-1) 하면 제일 앞에 있던게 제일 뒤으로 이동 popleft()는 제일 앞의 요소 제거 후 반환 3 제거하고 4 5 6 7 1 2 6 제거하고 7 1 ..

n = int(input()) a = [] for i in range(n): a.append(list(map(int, input().split()))) for i in range(n): r = 1 # 기본순위 1로 고정 for j in range(n): if(a[i][0] < a[j][0] and a[i][1] < a[j][1]): r += 1 print(r, end=' ') 기본 순위를 r=1로 고정시키고 몸무게와 키 모두 두 값이 큰 경우에만 +1 되도록 설정

n = int(input()) d = 666 while n != 0: if '666' in str(d): n -= 1 if n == 0: break d += 1 print(d) * 7번째는 6666이 아니라 6660 * 8번째는 7666이 아니라 6661 브루트 포스 알고리즘 - 완전 탐색 알고리즘 중 하나 - 가능한 모든 수를 조합하는 방식 ex) n이 3이라면 n이 0이 아니니까 while문 반복 str(d) 안에 '666'이 있으니까 if문 반복 n이 2가 되고 d +=1 해주면 667 다시 if문으로 돌아가서 str(d)인 '667'에 '666'이 없으니까 d +=1 해주면 668 다시 if문으로 돌아가서 str(d)인 '668'에 '666'이 없으니까 d += 1 해주면 669 이 과정을 계속 ..

n = int(input()) s = 1 d = 6 room = 1 if n == 1: print(1) else: while(1): s = s + d room += 1 if n

n = int(input()) w = [] for i in range(n): w.append(input()) set_w = list(set(w)) sort_w = [] for i in set_w: sort_w.append((len(i), i)) re = sorted(sort_w) for l_w, w in re: print(w) 집합 자료형 set은 중복 허용 X, 순서 X -> 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용 sort의 기본값은 오름차순 정렬, reverse=True는 내림차순 sort의 key 옵션에 지정된 함수의 결과에 따라 정렬 ex) sort(key=len) sorted는 순서대로 정렬, 정렬된 리스트 반환 중복을 허용하지 않는 set을 이용해 중복 제거하고 집합 자료형은 {..