일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react-redux
- 스프링
- Spring
- 백준
- 리덕스장바구니
- 타입스크립트
- 코드업
- 프로그래머스
- 알고리즘
- 정렬
- 공부
- 협업
- CPU 스케줄링
- 일상
- react
- error
- Operating System
- web
- memory
- C++
- Redux
- 자료구조
- codeup
- 분할메모리할당
- OS
- js to ts
- 기초100제
- 파이썬
- Java
- 토이프로젝트
- Today
- Total
목록알고리즘 (147)
감자튀김 공장🍟
✔ 문제 ✔ 풀이 graph = [list(map(int, input().split())) for _ in range(9)] x = max(map(max, graph)) print(x) for i in range(9): for j in range(9): if graph[i][j] == x: print(i+1, j+1) ✔ 설명 2차원 배열에서는 max를 쓰면 1열의 값들 중에서 가장 큰 수가 있는 행이 출력이 된다. 즉, 위의 예시에서는 3행이 출력된다 [87, 42, 18, 78, 53, 45, 18, 84, 53] 파이썬에서는 map을 사용해 이차원 배열에서의 최대값을 구할 수 있다. 최소값은 max 대신 min을 쓰면 구할 수 있게 된다. 최대값의 인덱스를 구하는 방법은 이차원 배열에서 최대값을 찾..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n, m = map(int, input().split()) a = [list(map(int, input().split())) for _ in range(n)] b = [list(map(int, input().split())) for _ in range(n)] for i in range(n): for j in range(m): a[i][j] += b[i][j] for i in range(n): print(*a[i]) ✔ 설명 a[i][j]에 b[i][j]값을 그대로 더한 후 a를 출력하면 된다.
✔ 문제 ✔ 풀이 🤢 풀다가 포기한 코드 t = int(input()) nums = [] for i in range(2, 10000): for j in range(2, int(i ** 0.5) + 1): if i % j == 0: break else: nums.append(i) for _ in range(t): n = int(input()) sums = [] mins = [] for i in nums: for j in nums: if i + j == n: sums.append([i, j]) break # 미완 코드가 점점 더 길어지고... 위에서 더 필요한 코드는 1. 예를 들어 n이 8일 때 [3, 5] [5, 3]이 저장되는데 이를 [3, 5] 하나만 저장되게 하는 코드 2. 만약 1번을 수정하지 않..
✔ 문제 ✔ 풀이 nums = [] # 소수를 저장할 리스트 for i in range(2, 246913): for j in range(2, int(i ** 0.5) + 1): if i % j == 0: break else: nums.append(i) while True: n = int(input()) count = 0 if n == 0: break for i in nums: if n < i
✔ 문제 ✔ 풀이 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) ✔ 후기 앞에 소수 문제를 풀었던 로직과 똑같다. for-else문에서 해당 소수를 출력하는 부분만 바뀌었다. 이 방법 말고 에라토스테네스의 체를 사용하면 더 빨리 풀 수 있을 것이다.
✔ 문제 ✔ 풀이 🤢 틀린 코드 (시간 초과) n = int(input()) nums = [] div = 2 while n >= 0: if n % div == 0: nums.append(div) n = n // div else: div += 1 print(*nums) while문 조건이 잘못된 것 같다. 👻 정답 코드 n = int(input()) nums = [] div = 2 while n != 1: if n % div == 0: nums.append(div) n = n // div else: div += 1 print(*nums) ✔ 설명 예제 입력1을 보면 72를 입력 받고 2 2 2 3 3 을 출력한다. 1. 72 // 2 = 36 2. 36 // 2 = 18 3. 18 // 2 = 9 4. 9..
✔ 문제 ✔ 풀이 m = int(input()) n = int(input()) nums = [] 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: nums.append(i) if len(nums) == 0: print(-1) else: print(sum(nums)) print(min(nums)) ✔ 설명 1978번과 똑같다. m~n사이의 소수를 찾으면 count += 1을 하는 것이 아니라 nums.append를 하여 해당 범위 내 소수들을 저장한다. 리스트의 길이가 0이 아니라면 nums의 합과 nums의 최소값을 출력하면 된다.
✔ 문제 ✔ 풀이 n = int(input()) nums = list(map(int, input().split())) count = 0 for i in nums: if i == 1: continue for j in range(2, int(i**0.5) + 1): if i % j == 0: break else: count += 1 print(count) ✔ 설명 리스트에 있는 값 중에서 1이 있는 경우는 continue를 사용해 다음 인덱스로 넘어간다. 이중 포문을 사용하여 range는 2부터 해당 인덱스 값에 루트를 씌운 값까지로 설정하고, i % j를 했을 때 0이 나오는 경우는 소수가 아니라고 판단한다. ex) i = 25인 경우 j의 범위는 2 ~ 6까지이다. 25 % 5 == 0 이므로 소수에서 ..
✔ 문제 ✔ 풀이 a, b = map(int, input().split()) print(a + b) ✔ 후기 파이썬 int의 범위는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 이므로 그냥 int형을 사용해도 된다.
✔ 문제 ✔ 풀이 n = int(input()) count = 0 while n >= 0: if n % 5 == 0: count += int(n // 5) print(count) break n -= 3 count += 1 else: print(-1) ✔ 설명 n이 0 이상일때까지 while문을 돌린다. n이 5의 배수가 아닐 경우 n -= 3을 한 후, 5의 배수가 만들어진다면 조건문을 통해 남은 n을 5로 나눈 몫을 count에 더한다. 만약 5의 배수가 계속 나오지 않고 while문의 조건을 만족하지 못하는 경우에는 설탕 3kg와 5kg로 해당 값을 만들 수 없다는 의미이기 때문에 else문을 통해 print(-1)을 실행한다. ✔ 후기 🤔..