T = int(input()) for tc in range(1,T+1): N, M = map(int, input().split()) weight = list(map(int,input().split())) truck = list(map(int,input().split())) ans = 0 for i in range(M): temp = [] for j in range(N): if truck[i] >= weight[j]: # 무게가 트럭 용량보다 작거나 같으면 temp.append(weight[j]) #temp에 넣어줌 if len(temp) != 0: #temp에 한개라도 들어갔을 때 ans += max(temp) # temp에 들어있는 최대값을 ans에 더해줌 for j in range(N): #최대값을 ..
1. 마지막 주유소는 사용을 안함( 그 주유소까지 도착하면 되기 때문) 따라서 반복문을 하나 전까지만 돌렸다. 2. 먼저 최소값을 0번째 인덱스가 있는 것으로 세팅을 해준다. 2.1 결과값에 곱한 값을 더해주고 다음 반복문으로 넘어감 3. 최소값이 다음 money리스트 안의 값보다 크면 3.1 최소값 업데이트 3.2 결과값에 곱한 값을 더해주고 다음 반복문으로 넘어감 4. 최소값이 다음 money리스트 안의 값보다 크지 않다면 4.1 그냥 결과값에 곱한 값을 더해준다. N = int(input()) # 도시의 개수 dis = list(map(int,input().split())) money = list(map(int,input().split())) result = 0 for i in range(0, le..
연속한 수의 합이 M이 되어야 하므로 이중 for문을 만들어서 뒤쪽 for은 앞 for문의 바로 뒤 인덱스부터 탐색하게 한다. 더한 값이 M이면 카운트해주고 for문을 나간다. 더한 값이 M보다 크면 그냥 for문을 나간다. N, M = map(int, input().split()) lst =list(map(int, input().split())) cnt = 0 for i in range(N): num_sum = lst[i] if num_sum == M: cnt += 1 continue for j in range(i+1, N): num_sum += lst[j] if num_sum == M: cnt += 1 break elif num_sum > M: break print(cnt)
T = int(input()) for tc in range(1, T+1): N, M = map(int, input().split()) b = format(M, 'b') # 2진수로 변환 ans = list(map(int, list(b))) ans.reverse() print("#{}".format(tc), end=' ') if len(ans) >= N: cnt = 0 for k in range(N): cnt += ans[k] if cnt == N: print('ON') else: print('OFF') else: print('OFF')
oper = ['+','-','*','/'] def cal(node): #후위순회 global result if not tree[node][0] in oper: #부모노드가 숫자이면 return tree[node][0] else: #부모노드가 연산자이면 left = cal(tree[node][1]) right = cal(tree[node][2]) if tree[node][0] == '+': result = left + right elif tree[node][0] == '-': result = left - right elif tree[node][0] == '*': result = left * right elif tree[node][0] == '/': result = left // right return r..
사실 구글링 했다! 답이 n-1이길래 생각해본 결과 그림을 그려보니까 첫번째 케이스일 때 이러한 그래프가 나온다. 세 원을 다 탐색 하려면 무조건 2개 선분을 지나야한다. 두번 째 케이스 제일 아래쪽 1번부터 5번까지 돌아야하는데 그러면 그려진 선분을 다 지나야한다. 그러면 꼭지점은 5개인데 그 사이에 존재하는 선분은 1개가 더 적을 것이다. (두 점이 있어야 한 선을 만드는 것의 원리) 그래서 답은 모든 나라 N개 - 1 T = int(input()) for tc in range(T): N, M = map(int, input().split()) for i in range(M): a, b = map(int, input().split()) print(N-1)
트리 문제를 이번 주 부터 시작 했는데 좀 어려웠다!! 이 문제는 리프노드에 숫자 데이터가 들어오고 각 부모 노드는 왼쪽자식 + 오른쪽 자식이다. 그래서 나는 반복문을 맨 끝에서 부터 돌았다. 2씩 줄게해서 부모 노드당 두개의 자식을 탐색하게 했다. 그림을 그려서 보니 인덱스 i라는 부모 노드가 존재하면 왼쪽 자식의 인덱스는 i*2이고 오른쪽 자식은 i * 2+1이다. 그래서 처음에 생각한 방법은 tree[i//2] = tree[i] + tree[i+1]이다. 그런데 인덱스 에러가 났다. 그림을 그려보니 노드의 개수가 짝수이면 맨 마지막에 왼쪽 노드만 존재하는 관계가 존재한다. 그래서 N이 짝수이면 맨 뒤 노드를 0이라는 데이터를 넣는 방식으로 내가 만들어서 넣었다. 그렇게 하면 부모= 왼 + 0 이 되..
1. 듣지 못한 명단을 리스트로 받고 2. 보지 못한 명단도 리스트로 받는다 3. 두가지 리스트를 set으로 집합으로 만들어준다음 교집합을(&) 구한 뒤에 다시 list로 만들어준다. 4. 듣도보도 못한 리스트를 사전순으로 sort해주고 출력 처음에 그냥 리스트 in을 사용해서 처리해줬는데 시간초과가 떴다. 리스트를 다 보아야해서 시간이 오래걸리는 것 같다. :( N, M =map(int,input().split()) no_hear = [] no_see = [] no_list = [] for i in range(N): a = input() no_hear.append(a) for i in range(M): b = input() no_see.append(b) #### in으로 했더니 시간초과!!!!!!!!!..
- Total
- Today
- Yesterday
- 안드로이드스튜디오
- 비동기패턴
- Python
- Java
- DOM
- vue.js
- 독학
- javascript
- 세션 스토리지
- 자바
- django
- 배포
- 파이썬
- 알고리즘
- SSAFY
- 위클리챌린지2주차
- 백준
- vue
- 프로그래머스
- SQL
- N과M
- 싸피
- 트리
- git
- splide
- AWS
- Pyhton
- SWEA
- SSAFY퇴소
- commit되돌리기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |