일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- web
- OS
- 일상
- 기초100제
- 분할메모리할당
- 프로그래머스
- C++
- error
- 스프링
- js to ts
- CPU 스케줄링
- 공부
- 알고리즘
- react-redux
- 타입스크립트
- 협업
- 코드업
- Redux
- Spring
- codeup
- Operating System
- 자료구조
- react
- 정렬
- 백준
- 파이썬
- 토이프로젝트
- memory
- Java
- 리덕스장바구니
- Today
- Total
목록백준 (138)
감자튀김 공장🍟
✔ 문제 ✔ 풀이 🍩 오답 코드 (로직 실수) import sys from collections import Counter input = sys.stdin.readline n = int(input()) nums = [] for _ in range(n): nums.append(int(input())) nums.sort() count = Counter(nums).most_common() count.sort(key=lambda x: -x[1]) median = 0 if len(count) > 1: median = count[1][1] else: median = count[0][1] print(round(sum(nums) / n)) print(nums[n//2]) print(median) print(max(nu..
✔ 문제 ✔ 풀이 🍣 틀린 코드 (메모리 초과) import sys input = sys.stdin.readline n = int(input()) nums = [] for _ in range(n): nums.append(int(input())) max_num = max(nums) count = [0] * (max_num + 1) sorted_nums = [] for i in nums: count[i] += 1 for i in range(max_num + 1): for _ in range(count[i]): sorted_nums.append(i) for i in sorted_nums: print(i) 계수 정렬을 사용하라길래 사용해봤더니 메모리 초과가 떴다 (〃⌒▽⌒〃)ゝ 🍔 정답 코드 import sys..
✔ 문제 ✔ 풀이 n = int(input()) nums = [] for _ in range(n): nums.append(int(input())) nums.sort() for i in nums: print(i) ✔ 후기 파이썬은... sort()가.. 있다...! 그래도 sort()말고 정렬하는 방법은 아는 게 훨씬 낫다.
✔ 문제 ✔ 풀이 n, k = map(int, input().split()) score = list(map(int, input().split())) score.sort(reverse=True) print(score[k-1]) ✔ 설명 score.sort()를 하게 되면 오름차순으로 정렬이 되는데 reverse=True라는 속성을 줘서 역순(내림차순)으로 정렬이 되게끔 하면 된다.
✔ 문제 ✔ 풀이 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을 쓰면 구할 수 있게 된다. 최대값의 인덱스를 구하는 방법은 이차원 배열에서 최대값을 찾..