Skip to content

Commit 95f601f

Browse files
authored
Kcm boj programers (#94)
* 주말코테 * 변경사항 * 찬민 백준, 프로그래머스 숙제 * 찬민 프로그래머스 22주차 숙제 * 찬민 프로그래머스 22주차 숙제 * 네이버웹툰 개발코테
1 parent 42b068f commit 95f601f

File tree

14 files changed

+331
-23
lines changed

14 files changed

+331
-23
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
def solution(lottery):
2+
answer = -1
3+
4+
arr = [0] * 1001
5+
visited = [0] * 1001
6+
sum = 0
7+
count = 0
8+
for i in range(len(lottery)):
9+
if lottery[i][1] == 0 and visited[lottery[i][0]] == 0:
10+
arr[lottery[i][0]] += 1
11+
else:
12+
visited[lottery[i][0]] = 1
13+
14+
for i in range(1000):
15+
if visited[i]:
16+
sum += arr[i]
17+
count += 1
18+
#print(sum, count)
19+
20+
if sum:
21+
answer = (sum+count) // count
22+
else:
23+
answer = 0
24+
25+
return answer
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from _collections import deque
2+
3+
4+
5+
dx = [-1, 1, 0, 0] #상하좌우
6+
dy = [0, 0, -1, 1]
7+
8+
def solution(grid):
9+
answer = 0
10+
row = len(grid)
11+
col = len(grid[0])
12+
map = [[1e9] * col for _ in range(row)]
13+
map[0][0] = grid[0][0]
14+
q = deque()
15+
q.append((0, 0))
16+
17+
while q:
18+
x, y = q.popleft()
19+
for i in range(4):
20+
nx = x + dx[i]
21+
ny = y + dy[i]
22+
if 0 <= nx < row and 0 <= ny < col:
23+
if map[x][y] + grid[nx][ny] < map[nx][ny]:
24+
map[nx][ny] = map[x][y] + grid[nx][ny]
25+
q.append((nx, ny))
26+
27+
28+
answer = map[row-1][col-1]
29+
30+
31+
return answer
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from _collections import deque
2+
import copy
3+
4+
def dfs(a, k):
5+
q = deque()
6+
7+
for i in range(len(a)):
8+
if a[i] =
9+
10+
11+
return
12+
13+
def solution(arr, k):
14+
answer = -1
15+
a = copy.deepcopy(arr)
16+
dfs(a, k)
17+
18+
return answer
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from _collections import deque
2+
3+
def solution(n, computers):
4+
answer = 0
5+
visited = [False for i in range(n)]
6+
for i in range(n):
7+
if visited[i] == False:
8+
bfs(n, computers, i, visited)
9+
answer += 1
10+
11+
return answer
12+
13+
def bfs(n, computers, i, visited):
14+
visited[i] = True
15+
q = deque()
16+
q.append(i)
17+
while len(q) > 0:
18+
now = q.popleft()
19+
visited[now] = True
20+
for connect in range(n):
21+
if connect != now and computers[now][connect] == 1:
22+
if visited[connect] == False:
23+
q.append(connect)
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
def solution(triangle):
2+
3+
for i in range(1, len(triangle)):
4+
for j in range(i+1):
5+
if j == 0:
6+
triangle[i][j] += triangle[i-1][j]
7+
elif j == i:
8+
triangle[i][j] += triangle[i - 1][j-1]
9+
else:
10+
triangle[i][j] += max(triangle[i-1][j-1], triangle[i-1][j])
11+
12+
13+
return max(triangle[-1])

‎cmkim/Programmers/그래프/순위.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
def solution(n, results):
2+
answer = 0
3+
4+
return answer
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from _collections import deque
2+
3+
4+
def solution(priorities, location):
5+
answer = 0
6+
7+
q = deque()
8+
result = deque()
9+
10+
for i in range(len(priorities)):
11+
q.append((priorities[i], i)) # 우선 순위랑 인덱스 순서로 넣어준다
12+
13+
print(q)
14+
15+
while q:
16+
pri, index = q.popleft()
17+
flag = 0
18+
#print('pri, index = ', pri, index)
19+
for i in range(len(q)):
20+
if q[i][0] > pri:
21+
#print('if')
22+
q.append((pri, index))
23+
flag = 1
24+
break
25+
if flag == 0:
26+
result.append((pri, index))
27+
#print('i = ', i, q)
28+
29+
#print(result)
30+
31+
for i in range(len(result)):
32+
if result[i][1] == location:
33+
answer = i + 1
34+
35+
return answer
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from itertools import permutations
2+
import math
3+
4+
def solution(numbers):
5+
answer = 0
6+
7+
arr = list(numbers)
8+
for i in range(2, len(numbers) + 1):
9+
pm = list(permutations(numbers, i))
10+
for j in pm:
11+
if len(j) <= len(numbers):
12+
arr.append(''.join(j))
13+
14+
15+
# arr = list(set(arr))
16+
# print(arr)
17+
18+
arr = list(set([int(x) for x in arr]))
19+
#print(arr)
20+
21+
for i in arr:
22+
if check(i):
23+
answer += 1
24+
25+
return answer
26+
27+
def check(n):
28+
k = math.sqrt(n)
29+
if n < 2:
30+
return False
31+
32+
for i in range(2, int(k)+1):
33+
if n % i == 0:
34+
return False
35+
return True
+11-23
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,20 @@
11
def solution(numbers):
2-
32
answer = ''
4-
count = 0
5-
for i in range(len(numbers)):
6-
count += len(str(numbers[i])) # i번째 숫자의 자리수를 더해줘서 총 자리수 구하기
7-
8-
9-
10-
return answer
113

12-
9
13-
---------
4+
num = list(map(str, numbers))
5+
num.sort(key=lambda x: x*3, reverse=True)
146

15-
7.51
167

17-
7.53
188

19-
753
20-
755
9+
for i in range(len(num)):
10+
answer += num[i]
2111

22-
7.92
12+
zero_flag = 0
13+
for i in range(len(answer)):
14+
if answer[i] != '0':
15+
zero_flag = 1
2316

24-
75 / 10 = 7.55
17+
if zero_flag == 0:
18+
return '0'
2519

26-
7 7.77
27-
28-
7 7.77
29-
30-
8
31-
32-
9
20+
return answer
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
def solution(phone_book):
2+
answer = True
3+
phone_book.sort()
4+
5+
# for a in range(len(phone_book)-1):
6+
# len_a = len(phone_book[a])
7+
# for b in range(a+1, len(phone_book)):
8+
# if phone_book[a] in phone_book[b][:len_a]:
9+
# answer = False
10+
11+
for a in range(len(phone_book) - 1):
12+
len_a = len(phone_book[a])
13+
if phone_book[a] in phone_book[a+1][:len_a]:
14+
answer = False
15+
16+
17+
return answer
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
n = int(input())
2+
arr = []
3+
4+
for _ in range(n):
5+
arr.append(input().split())
6+
7+
arr.sort(key=lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0]))
8+
9+
# 정렬된 학생 정보에서 이름만 출력
10+
for student in arr:
11+
print(student[0])
12+
13+
14+
'''
15+
12
16+
Junkyu 50 60 100
17+
Sangkeun 80 60 50
18+
Sunyoung 80 70 100
19+
Soong 50 60 90
20+
Haebin 50 60 100
21+
Kangsoo 60 80 100
22+
Donghyuk 80 60 100
23+
Sei 70 70 70
24+
Wonseob 70 70 90
25+
Sanghyun 70 70 80
26+
nsj 80 80 80
27+
Taewhan 50 60 90
28+
'''
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# n = int(input())
2+
# a = list(map(int, input().split()))
3+
# a.sort()
4+
#
5+
# print(a[(n - 1) // 2])
6+
7+
n = int(input())
8+
arr = []
9+
arr = list(map(int, input().split()))
10+
arr.sort()
11+
answer = 0
12+
for i in range(n):
13+
answer += arr[i]
14+
15+
answer /= n
16+
17+
min_v = 1e9
18+
min_index = 0
19+
20+
21+
for i in reversed(range(n)):
22+
if min_v >= abs(arr[i]-answer):
23+
min_v = min(min_v, abs(arr[i] - answer))
24+
min_index = i
25+
26+
27+
print(arr[min_index])
28+
29+
'''
30+
4
31+
1 5 6 10
32+
'''
33+
#1 2 10 11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import heapq
2+
3+
n = int(input())
4+
heap = []
5+
6+
for i in range(n):
7+
data = int(input())
8+
heapq.heappush(heap, data)
9+
10+
result = 0
11+
12+
while len(heap) != 1:
13+
a = heapq.heappop(heap)
14+
b = heapq.heappop(heap)
15+
sum = a + b
16+
result += sum
17+
heapq.heappush(heap, sum)
18+
19+
print(result)
20+
21+
# n = int(input())
22+
#
23+
# arr = []
24+
#
25+
# for i in range(n):
26+
# arr.append(int(input()))
27+
#
28+
# arr.sort()
29+
#
30+
#
31+
#
32+
# if n > 1:
33+
# answer = arr[0] + arr[1]
34+
# for i in range(2, n):
35+
# answer += answer
36+
# answer += arr[i]
37+
# #print('answer = ', answer)
38+
#
39+
# if n < 2:
40+
# answer = arr[0]
41+
#
42+
# print(answer)
43+
'''
44+
10
45+
20 30
46+
30 60 90
47+
40 100 190 280
48+
50 150 340
49+
60 210 550
50+
70 280
51+
52+
10
53+
20
54+
40
55+
50
56+
57+
60 180
58+
'''

‎cmkim/이것이 취업을 위한 코딩 테스트다/특정 거리의 도시 찾기_339p.py

Whitespace-only changes.

0 commit comments

Comments
 (0)