🚩 트리(tree) 코드 T = int(input()) def size(root): global cnt if tree[root][0]: cnt += 1 size(tree[root][0]) if tree[root][1]: cnt += 1 size(tree[root][1]) for tc in range(1, T+1): E, N = map(int, input().split()) # 간선개수, root tmp = list(map(int, input().split())) # 부모-자식 tree = [[0] * 3 for _ in range(E+2)] for i in range(E): # [왼쪽자식, 오른쪽자식, 부모노드] parent, child = tmp[i * 2], tmp[i * 2 + 1] tree[chi..
thinking 어차피 물건은 마지막날에 팔기때문에 뒤에서부터 체크해주면 된다. 뭔말이냐면, 매매가가 3, 4, 3, 1, 2, 3, 1 인 경우 앞에 3, 4 는 4가 제일 크므로 4에서 팔고, 중간의 3, 1, 2, 3, 은 맨 뒤 3이 가장 크므로 3일 때 판다. 마지막 1 은 1일때 판다. 즉, 뒤에서부터 보면서 최대값을 구하고, 그 값보다 같거나 작은 애들의 수익을 더하면 된다. 코드 price 리스트의 뒤에서부터 최대값을 체킹할거라 max_val 을 맨 뒤의 값으로 잡아줬다. 맨 뒤부터 돌면서 값을 비교하고 갱신한다. T = int(input()) for tc in range(1, T + 1): N = int(input()) price = list(map(int, input().split())..
코드 ❕ 주의 ❕ 90도 회전하는 rotation 함수에서 먼저 NxN 빈 배열을 만들어줘야 한다. 그래야 회전한 값을 넣을 수 있다. T = int(input()) # 90도 회전하는 함수 def rotation(a, N): new_arr = [[0] * N for _ in range(N)] # NxN 빈 배열 먼저 만들기 for i in range(N): for j in range(N): new_arr[i][j] = a[N-1-j][i] return new_arr for tc in range(1, T+1): N = int(input()) arr = [list(map(int, input().split())) for _ in range(N)] rot_90 = rotation(arr, N) rot_180 ..
풀이1 문제 조건에서 S가 1000 이하라고 주어졌기 때문에 for 문의 range를 len(card) // 3 으로 해줘야 한다. T = int(input()) for tc in range(1, T+1): card = input() S = [0]*14 D = [0]*14 H = [0]*14 C = [0]*14 res = True for i in range(len(card) // 3): # 알파벳 인덱스: 0,3,6,9 if card[i*3] == 'S': if S[int(card[i*3+1:i*3+3])] == 1: res = False break S[int(card[i*3+1:i*3+3])] += 1 elif card[i*3] == 'D': if D[int(card[i*3+1:i*3+3])] == 1..
- BFS
- 영어끝말잇기
- 삼성기출
- dfs
- 파이썬
- merge에러
- swea
- git 미러링
- 백준
- 21609 상어 중학교
- 알고리즘
- 20056 마법사 상어와 파이어볼
- 2018 카카오 공채
- 보석쇼핑
- 브루트포스
- merge 에러
- Python
- 기지국설치
- dp
- 17406 배열돌리기4
- 삼성코테
- 프로그래머스
- react
- 20057 마법사 상어와 토네이도
- 2579 계단오르기
- Total
- Today
- Yesterday