From 923752e1951113713ba0ae06ae54a5ec20d99ff1 Mon Sep 17 00:00:00 2001 From: 17-76018348 Date: Fri, 23 Jul 2021 18:43:55 +0900 Subject: [PATCH 1/2] yang0723 update --- Level2/Lessons12978/yang.py | 69 +++++++++++++++++++++++++++++++++++++ Level2/Lessons42578/yang.py | 37 ++++++++++++++++++++ Level2/Lessons42842/yang.py | 23 +++++++++++++ Level2/Lessons42860/yang.py | 46 +++++++++++++++++++++++++ Level2/Lessons60058/yang.py | 61 ++++++++++++++++++++++++++++++++ 5 files changed, 236 insertions(+) create mode 100644 Level2/Lessons12978/yang.py create mode 100644 Level2/Lessons42578/yang.py create mode 100644 Level2/Lessons42842/yang.py create mode 100644 Level2/Lessons42860/yang.py create mode 100644 Level2/Lessons60058/yang.py diff --git a/Level2/Lessons12978/yang.py b/Level2/Lessons12978/yang.py new file mode 100644 index 0000000..1503515 --- /dev/null +++ b/Level2/Lessons12978/yang.py @@ -0,0 +1,69 @@ +# 배달 +import sys +INF = sys.maxsize +def alg(n, arr): + + dist = [[INF] * n for i in range(n)] + + for i in range(n): + for j in range(n): + dist[i][j] = arr[i][j] + + for k in range(n): + for i in range(n): + for j in range(n): + if dist[i][j] > dist[i][k] + dist[k][j]: + dist[i][j] = dist[i][k] + dist[k][j] + return dist +def solution(N, road, K): + tmp_arr1 = sorted(road, key = lambda x : x[0]) + tmp_arr2 = sorted(road, key = lambda x : x[1]) + n = max(tmp_arr1[-1][0], tmp_arr2[-1][1]) + + arr = [[INF]*n for _ in range(n)] + for y in range(n): + for x in range(n): + if x == y: + arr[y][x] = 0 + for way in road: + arr[way[0]-1][way[1]-1] = min(way[2], arr[way[0]-1][way[1]-1]) + arr[way[1]-1][way[0]-1] = min(way[2], arr[way[1]-1][way[0]-1]) + + dist = alg(n,arr) + answer = 0 + for num in dist[0]: + if num <= K: + answer += 1 + return answer +# 테스트 1 〉 통과 (0.14ms, 10.3MB) +# 테스트 2 〉 통과 (0.06ms, 10.3MB) +# 테스트 3 〉 통과 (0.08ms, 10.4MB) +# 테스트 4 〉 통과 (0.07ms, 10.2MB) +# 테스트 5 〉 통과 (0.34ms, 10.3MB) +# 테스트 6 〉 통과 (0.10ms, 10.3MB) +# 테스트 7 〉 통과 (0.10ms, 10.3MB) +# 테스트 8 〉 통과 (0.11ms, 10.3MB) +# 테스트 9 〉 통과 (0.04ms, 10.3MB) +# 테스트 10 〉 통과 (0.27ms, 10.3MB) +# 테스트 11 〉 통과 (0.34ms, 10.3MB) +# 테스트 12 〉 통과 (9.82ms, 10.4MB) +# 테스트 13 〉 통과 (5.79ms, 10.3MB) +# 테스트 14 〉 통과 (5.70ms, 10.3MB) +# 테스트 15 〉 통과 (10.11ms, 10.4MB) +# 테스트 16 〉 통과 (1.74ms, 10.3MB) +# 테스트 17 〉 통과 (4.44ms, 10.3MB) +# 테스트 18 〉 통과 (18.57ms, 10.4MB) +# 테스트 19 〉 통과 (18.23ms, 10.5MB) +# 테스트 20 〉 통과 (16.73ms, 10.3MB) +# 테스트 21 〉 통과 (14.57ms, 10.5MB) +# 테스트 22 〉 통과 (19.39ms, 10.4MB) +# 테스트 23 〉 통과 (22.68ms, 10.5MB) +# 테스트 24 〉 통과 (16.06ms, 10.5MB) +# 테스트 25 〉 통과 (22.41ms, 10.7MB) +# 테스트 26 〉 통과 (21.42ms, 10.6MB) +# 테스트 27 〉 통과 (16.83ms, 10.6MB) +# 테스트 28 〉 통과 (22.54ms, 10.7MB) +# 테스트 29 〉 통과 (22.60ms, 10.6MB) +# 테스트 30 〉 통과 (21.77ms, 10.6MB) +# 테스트 31 〉 통과 (20.49ms, 10.4MB) +# 테스트 32 〉 통과 (20.49ms, 10.3MB) \ No newline at end of file diff --git a/Level2/Lessons42578/yang.py b/Level2/Lessons42578/yang.py new file mode 100644 index 0000000..4e7e77f --- /dev/null +++ b/Level2/Lessons42578/yang.py @@ -0,0 +1,37 @@ +# 위장 +def solution(clothes): + answer = {} + for i in clothes: + answer[i[1]] = answer.get(i[1],0) + 1 + cnt = 1 + for i in answer.values(): + cnt *= (i+1) + return cnt - 1 +# 테스트 1 〉 통과 (0.02ms, 10.2MB) +# 테스트 2 〉 통과 (0.01ms, 10.3MB) +# 테스트 3 〉 통과 (0.01ms, 10.3MB) +# 테스트 4 〉 통과 (0.02ms, 10.1MB) +# 테스트 5 〉 통과 (0.01ms, 10.2MB) +# 테스트 6 〉 통과 (0.01ms, 10.2MB) +# 테스트 7 〉 통과 (0.02ms, 10.3MB) +# 테스트 8 〉 통과 (0.01ms, 10.2MB) +# 테스트 9 〉 통과 (0.01ms, 10MB) +# 테스트 10 〉 통과 (0.01ms, 10.2MB) +# 테스트 11 〉 통과 (0.01ms, 10.3MB) +# 테스트 12 〉 통과 (0.01ms, 10.2MB) +# 테스트 13 〉 통과 (0.01ms, 10.2MB) +# 테스트 14 〉 통과 (0.01ms, 10.2MB) +# 테스트 15 〉 통과 (0.01ms, 10.2MB) +# 테스트 16 〉 통과 (0.00ms, 10.2MB) +# 테스트 17 〉 통과 (0.01ms, 10.2MB) +# 테스트 18 〉 통과 (0.01ms, 10.2MB) +# 테스트 19 〉 통과 (0.01ms, 10.1MB) +# 테스트 20 〉 통과 (0.01ms, 10.1MB) +# 테스트 21 〉 통과 (0.01ms, 10.2MB) +# 테스트 22 〉 통과 (0.01ms, 10.1MB) +# 테스트 23 〉 통과 (0.01ms, 10.2MB) +# 테스트 24 〉 통과 (0.01ms, 10.1MB) +# 테스트 25 〉 통과 (0.01ms, 10.2MB) +# 테스트 26 〉 통과 (0.02ms, 10.3MB) +# 테스트 27 〉 통과 (0.01ms, 10.1MB) +# 테스트 28 〉 통과 (0.01ms, 10.1MB) \ No newline at end of file diff --git a/Level2/Lessons42842/yang.py b/Level2/Lessons42842/yang.py new file mode 100644 index 0000000..3d9fe27 --- /dev/null +++ b/Level2/Lessons42842/yang.py @@ -0,0 +1,23 @@ +# 카펫 +def solution(brown, yellow): + answer = [] + tmp = int((brown - 4)/2) + for i in range(tmp): + if i * (tmp - i) == yellow: + answer = [tmp-i + 2 , i + 2] + return answer + + return answer +# 테스트 1 〉 통과 (0.01ms, 10.2MB) +# 테스트 2 〉 통과 (0.01ms, 10.2MB) +# 테스트 3 〉 통과 (0.11ms, 10.2MB) +# 테스트 4 〉 통과 (0.01ms, 10.2MB) +# 테스트 5 〉 통과 (0.01ms, 10.2MB) +# 테스트 6 〉 통과 (0.04ms, 10.1MB) +# 테스트 7 〉 통과 (0.10ms, 10.2MB) +# 테스트 8 〉 통과 (0.12ms, 10.3MB) +# 테스트 9 〉 통과 (0.11ms, 10.2MB) +# 테스트 10 〉 통과 (0.13ms, 10.2MB) +# 테스트 11 〉 통과 (0.01ms, 10.1MB) +# 테스트 12 〉 통과 (0.00ms, 10.2MB) +# 테스트 13 〉 통과 (0.01ms, 10.2MB) \ No newline at end of file diff --git a/Level2/Lessons42860/yang.py b/Level2/Lessons42860/yang.py new file mode 100644 index 0000000..784f66a --- /dev/null +++ b/Level2/Lessons42860/yang.py @@ -0,0 +1,46 @@ +# 조이스틱 +def solution(name): + moves = [] + for s in name: + if ord(s) < 77.5: + moves.append(ord(s) - ord('A')) + else: + moves.append(ord('Z') - ord(s) + 1) + idx = 0 + answer = 0 + while True: + answer += moves[idx] + moves[idx] = 0 + + if sum(moves) == 0: + break + + left_A = 1 + right_A = 1 + + while moves[idx - left_A] == 0: + left_A += 1 + + while moves[idx + right_A] == 0: + right_A += 1 + + if left_A >= right_A: + idx += right_A + answer += right_A + + else: + idx -= left_A + answer += left_A + + return answer +# 테스트 1 〉 통과 (0.01ms, 10.2MB) +# 테스트 2 〉 통과 (0.01ms, 10.3MB) +# 테스트 3 〉 통과 (0.01ms, 10.3MB) +# 테스트 4 〉 통과 (0.02ms, 10.3MB) +# 테스트 5 〉 통과 (0.02ms, 10.1MB) +# 테스트 6 〉 통과 (0.01ms, 10.2MB) +# 테스트 7 〉 통과 (0.02ms, 10.2MB) +# 테스트 8 〉 통과 (0.01ms, 10.2MB) +# 테스트 9 〉 통과 (0.01ms, 10.2MB) +# 테스트 10 〉 통과 (0.01ms, 10.3MB) +# 테스트 11 〉 통과 (0.02ms, 10.2MB) \ No newline at end of file diff --git a/Level2/Lessons60058/yang.py b/Level2/Lessons60058/yang.py new file mode 100644 index 0000000..d194082 --- /dev/null +++ b/Level2/Lessons60058/yang.py @@ -0,0 +1,61 @@ +# 괄호 변환 +def solution(p): + counter = 0 + open_num = 0 + if not p: + return '' + u = '' + v = '' + for tmp in p: + if tmp == '(': + counter += 1 + u += tmp + else: + counter -= 1 + u += tmp + if counter == 0: + v = p[len(u):] + u_flag = True + for inner_p in u: + if inner_p == '(': + open_num += 1 + else: + open_num -= 1 + if open_num < 0: + u_flag = False + if u_flag: + return u + solution(v) + else: + new_u = '' + for i in u[1:-1]: + if i == '(': + new_u += ')' + else: + new_u += '(' + answer = '(' + solution(v) + ')' + new_u + return answer +# 테스트 1 〉 통과 (0.01ms, 10.3MB) +# 테스트 2 〉 통과 (0.01ms, 10.2MB) +# 테스트 3 〉 통과 (0.01ms, 10.2MB) +# 테스트 4 〉 통과 (0.01ms, 10.3MB) +# 테스트 5 〉 통과 (0.01ms, 10.4MB) +# 테스트 6 〉 통과 (0.01ms, 10.4MB) +# 테스트 7 〉 통과 (0.01ms, 10.4MB) +# 테스트 8 〉 통과 (0.01ms, 10.3MB) +# 테스트 9 〉 통과 (0.02ms, 10.2MB) +# 테스트 10 〉 통과 (0.01ms, 10.2MB) +# 테스트 11 〉 통과 (0.03ms, 10.3MB) +# 테스트 12 〉 통과 (0.05ms, 10.2MB) +# 테스트 13 〉 통과 (0.05ms, 10.2MB) +# 테스트 14 〉 통과 (0.08ms, 10.3MB) +# 테스트 15 〉 통과 (0.10ms, 10.2MB) +# 테스트 16 〉 통과 (0.23ms, 10.3MB) +# 테스트 17 〉 통과 (0.23ms, 10.2MB) +# 테스트 18 〉 통과 (0.30ms, 10.4MB) +# 테스트 19 〉 통과 (0.55ms, 10.3MB) +# 테스트 20 〉 통과 (0.41ms, 10.2MB) +# 테스트 21 〉 통과 (0.46ms, 10.2MB) +# 테스트 22 〉 통과 (0.84ms, 10.2MB) +# 테스트 23 〉 통과 (0.32ms, 10.2MB) +# 테스트 24 〉 통과 (0.15ms, 10.3MB) +# 테스트 25 〉 통과 (0.25ms, 10.3MB) \ No newline at end of file From 7205e9d3eaf07765695562ed099bdade89ce880a Mon Sep 17 00:00:00 2001 From: 17-76018348 <53898123+17-76018348@users.noreply.github.com> Date: Mon, 2 Aug 2021 18:15:48 +0900 Subject: [PATCH 2/2] yang update --- Level2/Lessons12980/yang.py | 42 ++++++++++++++++++++++++++ Level2/Lessons17679/yang.py | 60 +++++++++++++++++++++++++++++++++++++ Level2/Lessons17680/yang.py | 22 ++++++++++++++ Level2/Lessons42584/yang.py | 28 +++++++++++++++++ Level2/Lessons70129/yang.py | 30 +++++++++++++++++++ Level2/Lessons77885/yang.py | 32 ++++++++++++++++++++ 6 files changed, 214 insertions(+) create mode 100644 Level2/Lessons12980/yang.py create mode 100644 Level2/Lessons17679/yang.py create mode 100644 Level2/Lessons17680/yang.py create mode 100644 Level2/Lessons42584/yang.py create mode 100644 Level2/Lessons70129/yang.py create mode 100644 Level2/Lessons77885/yang.py diff --git a/Level2/Lessons12980/yang.py b/Level2/Lessons12980/yang.py new file mode 100644 index 0000000..800c8db --- /dev/null +++ b/Level2/Lessons12980/yang.py @@ -0,0 +1,42 @@ +# 점프와 순간 이동 +def solution(n): + ans = 0 + + while(1): + if n % 2 == 0: + n //= 2 + else: + ans += 1 + n = (n-1)//2 + if n == 0: + break + return ans +# 테스트 1 〉 통과 (0.00ms, 10.2MB) +# 테스트 2 〉 통과 (0.00ms, 10.2MB) +# 테스트 3 〉 통과 (0.00ms, 10.2MB) +# 테스트 4 〉 통과 (0.00ms, 10.1MB) +# 테스트 5 〉 통과 (0.01ms, 10.1MB) +# 테스트 6 〉 통과 (0.00ms, 10.2MB) +# 테스트 7 〉 통과 (0.01ms, 10.2MB) +# 테스트 8 〉 통과 (0.00ms, 10.2MB) +# 테스트 9 〉 통과 (0.01ms, 10.1MB) +# 테스트 10 〉 통과 (0.01ms, 10.1MB) +# 테스트 11 〉 통과 (0.01ms, 10.2MB) +# 테스트 12 〉 통과 (0.01ms, 10.2MB) +# 테스트 13 〉 통과 (0.00ms, 10.1MB) +# 테스트 14 〉 통과 (0.00ms, 10.2MB) +# 테스트 15 〉 통과 (0.01ms, 10.1MB) +# 테스트 16 〉 통과 (0.01ms, 10.2MB) +# 테스트 17 〉 통과 (0.00ms, 10.2MB) +# 테스트 18 〉 통과 (0.00ms, 10.1MB) +# 효율성 테스트 +# 테스트 1 〉 통과 (0.01ms, 10.2MB) +# 테스트 2 〉 통과 (0.01ms, 10.2MB) +# 테스트 3 〉 통과 (0.01ms, 10.1MB) +# 테스트 4 〉 통과 (0.01ms, 10.2MB) +# 테스트 5 〉 통과 (0.01ms, 10.2MB) +# 테스트 6 〉 통과 (0.01ms, 10.2MB) +# 테스트 7 〉 통과 (0.01ms, 10.2MB) +# 테스트 8 〉 통과 (0.01ms, 10.1MB) +# 테스트 9 〉 통과 (0.01ms, 10.2MB) +# 테스트 10 〉 통과 (0.01ms, 10.2MB) \ No newline at end of file diff --git a/Level2/Lessons17679/yang.py b/Level2/Lessons17679/yang.py new file mode 100644 index 0000000..ff04c18 --- /dev/null +++ b/Level2/Lessons17679/yang.py @@ -0,0 +1,60 @@ +# 1차 프렌즈4블록 +import copy +def pull(board): + board_copy = copy.deepcopy(board) + cnt = 0 + for y in range(len(board)): + for x in reversed(range(len(board[0]))): + if board[y][x] == '9': + cnt += 1 + del board[y][x] + for _ in range(cnt): + board[y].append('9') + + cnt = 0 + return board + +def cal(board): + tmp = [] + flag = False + for y in range(len(board)-1): + for x in range(len(board[0])-1): + if board[y][x] == board[y+1][x] == board[y][x+1] == board[y+1][x+1] and board[y][x] != '9': + tmp.append([y,x]) + flag = True + for pair in tmp: + board[pair[0]][pair[1]] = '9' + board[pair[0] + 1][pair[1]] = '9' + board[pair[0]][pair[1] + 1] = '9' + board[pair[0] + 1][pair[1] + 1] = '9' + return board, flag +def solution(m, n, board): + answer = 0 + board = list(map(list, zip(*board))) + for i in range(len(board)): + board[i] = board[i][::-1] + while(1): + board, flag = cal(board) + + if flag == False: + break + board = pull(board) + + + answer = 0 + for y in range(len(board)): + for x in range(len(board[0])): + if board[y][x] == '9': + answer += 1 + return answer +# 테스트 1 〉 통과 (0.09ms, 10.3MB) +# 테스트 2 〉 통과 (0.12ms, 10.3MB) +# 테스트 3 〉 통과 (0.02ms, 10.4MB) +# 테스트 4 〉 통과 (1.61ms, 10.4MB) +# 테스트 5 〉 통과 (141.24ms, 10.3MB) +# 테스트 6 〉 통과 (10.45ms, 10.3MB) +# 테스트 7 〉 통과 (0.95ms, 10.3MB) +# 테스트 8 〉 통과 (1.81ms, 10.3MB) +# 테스트 9 〉 통과 (0.09ms, 10.4MB) +# 테스트 10 〉 통과 (1.21ms, 10.3MB) +# 테스트 11 〉 통과 (5.00ms, 10.3MB) \ No newline at end of file diff --git a/Level2/Lessons17680/yang.py b/Level2/Lessons17680/yang.py new file mode 100644 index 0000000..ea9a96e --- /dev/null +++ b/Level2/Lessons17680/yang.py @@ -0,0 +1,22 @@ +# 캐시 +def solution(cacheSize, cities): + from collections import deque + tmp_que = deque() + answer = 0 + if cacheSize == 0: + return len(cities) * 5 + for city in cities: + city = city.lower() + if city in tmp_que: + answer += 1 + tmp_que.remove(city) + tmp_que.append(city) + else: + answer += 5 + if cacheSize <= len(tmp_que): + tmp_que.popleft() + tmp_que.append(city) + + + + return answer diff --git a/Level2/Lessons42584/yang.py b/Level2/Lessons42584/yang.py new file mode 100644 index 0000000..89d7b7a --- /dev/null +++ b/Level2/Lessons42584/yang.py @@ -0,0 +1,28 @@ +# 주식가격 +def solution(prices): + answer = [0] * len(prices) + for idx1 in range(len(prices)): + for idx2 in range(idx1 + 1, len(prices)): + if prices[idx1] > prices[idx2]: + answer[idx1] += 1 + break + else: + answer[idx1] += 1 + + return answer +# 테스트 1 〉 통과 (0.01ms, 10.1MB) +# 테스트 2 〉 통과 (0.05ms, 10.2MB) +# 테스트 3 〉 통과 (1.13ms, 10.2MB) +# 테스트 4 〉 통과 (1.18ms, 10.3MB) +# 테스트 5 〉 통과 (1.51ms, 10.3MB) +# 테스트 6 〉 통과 (0.05ms, 10.2MB) +# 테스트 7 〉 통과 (0.75ms, 10.2MB) +# 테스트 8 〉 통과 (0.88ms, 10.3MB) +# 테스트 9 〉 통과 (0.05ms, 10.2MB) +# 테스트 10 〉 통과 (1.50ms, 10.3MB) +# 효율성 테스트 +# 테스트 1 〉 통과 (154.87ms, 18.9MB) +# 테스트 2 〉 통과 (121.27ms, 17.6MB) +# 테스트 3 〉 통과 (181.54ms, 19.5MB) +# 테스트 4 〉 통과 (139.06ms, 18.2MB) +# 테스트 5 〉 통과 (87.12ms, 16.9MB) \ No newline at end of file diff --git a/Level2/Lessons70129/yang.py b/Level2/Lessons70129/yang.py new file mode 100644 index 0000000..1f50c77 --- /dev/null +++ b/Level2/Lessons70129/yang.py @@ -0,0 +1,30 @@ +# 이진 변환 반복하기 +def cal(s): + + cnt = 0 + cnt = s.count("0") + s = s.replace('0','') + return bin(len(s))[2:], cnt +def solution(s): + answer = [0, 0] + iter = 0 + while(1): + iter += 1 + s, cnt = cal(s) + answer[1] += cnt + if s == '1': + break + answer[0] = iter + print(answer) + return answer +# 테스트 1 〉 통과 (0.01ms, 10.2MB) +# 테스트 2 〉 통과 (1.86ms, 10.4MB) +# 테스트 3 〉 통과 (0.02ms, 10.2MB) +# 테스트 4 〉 통과 (0.02ms, 10.3MB) +# 테스트 5 〉 통과 (0.01ms, 10.2MB) +# 테스트 6 〉 통과 (0.02ms, 10.2MB) +# 테스트 7 〉 통과 (0.04ms, 10.2MB) +# 테스트 8 〉 통과 (0.03ms, 10.2MB) +# 테스트 9 〉 통과 (0.53ms, 10.3MB) +# 테스트 10 〉 통과 (2.07ms, 10.3MB) +# 테스트 11 〉 통과 (1.59ms, 10.4MB) \ No newline at end of file diff --git a/Level2/Lessons77885/yang.py b/Level2/Lessons77885/yang.py new file mode 100644 index 0000000..1a460c7 --- /dev/null +++ b/Level2/Lessons77885/yang.py @@ -0,0 +1,32 @@ +# 2개 이하로 다른 비트 +def cal(numbers): + numbers = '000000' + bin(numbers)[2:] + answer = [] + if numbers[-1] == '0': + + return int(numbers[:-1] + '1',2) + numbers = numbers[::-1] + for idx, ch in enumerate(numbers): + if ch == '1': + pass + elif ch == '0': + numbers = numbers[:idx-1] + '01'+numbers[idx+1:] + break + numbers = numbers[::-1] + return int(numbers, 2) +def solution(numbers): + answer = [] + for number in numbers: + answer.append(cal(number)) + return answer +# 테스트 1 〉 통과 (1.35ms, 10.3MB) +# 테스트 2 〉 통과 (88.99ms, 26.1MB) +# 테스트 3 〉 통과 (0.16ms, 10.2MB) +# 테스트 4 〉 통과 (1.35ms, 10.3MB) +# 테스트 5 〉 통과 (1.45ms, 10.4MB) +# 테스트 6 〉 통과 (1.26ms, 10.3MB) +# 테스트 7 〉 통과 (104.56ms, 25.3MB) +# 테스트 8 〉 통과 (96.19ms, 24.8MB) +# 테스트 9 〉 통과 (89.75ms, 24.1MB) +# 테스트 10 〉 통과 (264.11ms, 26.8MB) +# 테스트 11 〉 통과 (262.71ms, 26.8MB) \ No newline at end of file