일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- Operating System
- 일상
- OS
- C++
- 백준
- 코드업
- 스프링
- Spring
- 정렬
- react
- 협업
- 분할메모리할당
- 파이썬
- codeup
- CPU 스케줄링
- js to ts
- 토이프로젝트
- 프로그래머스
- 기초100제
- 타입스크립트
- error
- Java
- 리덕스장바구니
- 자료구조
- Redux
- web
- react-redux
- memory
- 공부
- Today
- Total
목록Algorithm (180)
감자튀김 공장🍟
✔ 문제 ✔ 풀이 numbers = [] for _ in range(5): numbers.append(int(input())) numbers.sort() print(sum(numbers) // 5) print(numbers[2]) ✔ 후기 .sort() 믿고 설치면 안되는데... sort()가 너무 유혹적이다....... ...... ...
✔ 문제 ✔ 풀이 n = int(input()) numbers = [] for _ in range(n): numbers.append(int(input())) numbers = list(set(numbers)) numbers.sort() for i in numbers: print(i) ✔ 설명 numbers 리스트에 정렬할 수들을 입력 받은 후 중복 원소 제거를 위해 list를 set으로 형 변환을 해준다. 파이썬은 따로 삽입 정렬이나, 거품 정렬과 같은 코드를 사용하지 않고 list.sort()를 사용하면 정렬이 되기 때문에 set(numbers)를 다시 리스트로 변경해줘야 한다. 그래서 numbers = list(set(numbers))) 라는 코드를 사용하여 중복 원소를 제거한 list를 만든 후 s..
✔ 문제 ✔ 풀이 n = int(input()) white = [[0 for _ in range(101)] for _ in range(101)] for _ in range(n): x, y = map(int, input().split()) for i in range(x, x+10): for j in range(y, y+10): white[i][j] = 1 ans = 0 for r in white: ans += r.count(1) print(ans) ✔ 설명 1. 흰 도화지는 가로, 세로 100 사이즈로 고정되어 있으며 색종이가 해당 범위를 넘어가지 않기 때문에 0~100까지의 이차원 배열을 생성한다. 2. 색종이의 x, y 좌표를 입력받은 후 색종이의 크기는 가로, 세로 10이기 때문에 for문을 돌면서 ..
✔ 문제 ✔ 풀이 a = [i for i in range(1, 31)] b = [] for i in range(28): b.append(int(input())) none = [] for i in a: if i not in b: none.append(i) print(min(none)) print(max(none)) ✔ 후기 위 코드로 제출했을 때 108ms가 나왔지만 시간을 더 줄일 수 있을까 싶어서 코드를 아래처럼 바꿔봤다. 원래 부분 print(min(none)) print(max(none)) 수정 부분 none.sort() print(none[0]) print(none[1]) 그래도 결과는 똑같이 108ms가 나왔다.
✔ 문제 ✔ 풀이 n = int(input()) numbers = list(map(int, input().split())) x = int(input()) cnt = 0 for i in numbers: if i == x: cnt += 1 print(cnt) ✔ 후기 1차원 배열 문제 다 풀었던 것 같은데 어느새 2문제가 추가되어 있길래 후다닥 푸는 중 (-‿◦☀)
✔ 문제 ✔ 풀이 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문에서 해당 소수를 출력하는 부분만 바뀌었다. 이 방법 말고 에라토스테네스의 체를 사용하면 더 빨리 풀 수 있을 것이다.