From c5699d3581f3cb3139c0b59e2972a622f811afe3 Mon Sep 17 00:00:00 2001 From: najy97 <57242033+najy97@users.noreply.github.com> Date: Mon, 16 Aug 2021 21:49:52 +0900 Subject: [PATCH 1/3] najy --- Level2/Lessons12981/najy97.py | 36 ++++++++++++++++++++++++++++ Level2/Lessons42885/najy97.py | 45 +++++++++++++++++++++++++++++++++++ Level2/Lessons68645/najy97.py | 1 + Level2/Lessons72412/najy97.py | 1 + 4 files changed, 83 insertions(+) create mode 100644 Level2/Lessons12981/najy97.py create mode 100644 Level2/Lessons42885/najy97.py create mode 100644 Level2/Lessons68645/najy97.py create mode 100644 Level2/Lessons72412/najy97.py diff --git a/Level2/Lessons12981/najy97.py b/Level2/Lessons12981/najy97.py new file mode 100644 index 0000000..e6312f7 --- /dev/null +++ b/Level2/Lessons12981/najy97.py @@ -0,0 +1,36 @@ +#영어 끝말잇기 +def solution(n, words): + answer = [0,0] + order = 1 + #첫번째 사람은 pass + for i in range(1,len(words)): + order %= n #순서 카운팅 + word = words[i] #현재 단어 + if (word in words[:i]) or (words[i-1][-1] != word[0]): + return [order + 1, 1 + i//n] #순서, (단어//명수=이전까지 횟수)+1 = 현재 횟수 + order += 1 + + return answer + +''' +테스트 1 〉 통과 (0.01ms, 10.1MB) +테스트 2 〉 통과 (0.03ms, 10.2MB) +테스트 3 〉 통과 (0.01ms, 10.1MB) +테스트 4 〉 통과 (0.01ms, 10.2MB) +테스트 5 〉 통과 (0.06ms, 10.1MB) +테스트 6 〉 통과 (0.01ms, 10.1MB) +테스트 7 〉 통과 (0.01ms, 10.1MB) +테스트 8 〉 통과 (0.01ms, 10MB) +테스트 9 〉 통과 (0.01ms, 10.1MB) +테스트 10 〉 통과 (0.04ms, 10.2MB) +테스트 11 〉 통과 (0.03ms, 10.3MB) +테스트 12 〉 통과 (0.03ms, 10.2MB) +테스트 13 〉 통과 (0.01ms, 10.2MB) +테스트 14 〉 통과 (0.01ms, 10.2MB) +테스트 15 〉 통과 (0.01ms, 10.2MB) +테스트 16 〉 통과 (0.01ms, 10.1MB) +테스트 17 〉 통과 (0.01ms, 10.1MB) +테스트 18 〉 통과 (0.01ms, 10.1MB) +테스트 19 〉 통과 (0.01ms, 10.1MB) +테스트 20 〉 통과 (0.15ms, 10.2MB) +''' \ No newline at end of file diff --git a/Level2/Lessons42885/najy97.py b/Level2/Lessons42885/najy97.py new file mode 100644 index 0000000..ec0b000 --- /dev/null +++ b/Level2/Lessons42885/najy97.py @@ -0,0 +1,45 @@ +#구명보트 +def solution(people, limit): + answer = 0 + start, end = 0, len(people)-1 + + people.sort() + + # 혼자 타야되는 사람 컷 + for weight in people: + if weight > limit-40: + answer += 1 + end -= 1 + + # 모든 사람을 구출할 때 까지 반복 + while start <= end: + answer += 1 + if people[start] + people[end] <= limit: + start += 1 + end -= 1 + + return answer +''' +정확성 테스트 +테스트 1 〉 통과 (1.51ms, 10.2MB) +테스트 2 〉 통과 (0.52ms, 10.3MB) +테스트 3 〉 통과 (1.13ms, 10.1MB) +테스트 4 〉 통과 (0.69ms, 10.1MB) +테스트 5 〉 통과 (0.46ms, 10.2MB) +테스트 6 〉 통과 (0.28ms, 10.1MB) +테스트 7 〉 통과 (0.32ms, 10.3MB) +테스트 8 〉 통과 (0.03ms, 10.1MB) +테스트 9 〉 통과 (0.05ms, 10.1MB) +테스트 10 〉통과 (0.69ms, 10.3MB) +테스트 11 〉통과 (0.52ms, 10.1MB) +테스트 12 〉통과 (0.51ms, 10.3MB) +테스트 13 〉통과 (0.58ms, 10.2MB) +테스트 14 〉통과 (0.61ms, 10.1MB) +테스트 15 〉통과 (0.06ms, 10.2MB) +효율성 테스트 +테스트 1 〉 통과 (9.28ms, 10.6MB) +테스트 2 〉 통과 (7.08ms, 10.6MB) +테스트 3 〉 통과 (9.88ms, 10.5MB) +테스트 4 〉 통과 (7.49ms, 10.5MB) +테스트 5 〉 통과 (7.17ms, 10.6MB) +''' \ No newline at end of file diff --git a/Level2/Lessons68645/najy97.py b/Level2/Lessons68645/najy97.py new file mode 100644 index 0000000..c0a4c57 --- /dev/null +++ b/Level2/Lessons68645/najy97.py @@ -0,0 +1 @@ +#삼각 달팽이 \ No newline at end of file diff --git a/Level2/Lessons72412/najy97.py b/Level2/Lessons72412/najy97.py new file mode 100644 index 0000000..c546dd0 --- /dev/null +++ b/Level2/Lessons72412/najy97.py @@ -0,0 +1 @@ +#순위 검색 \ No newline at end of file From b9364c62b41173c22129deb49477c4484e6041cd Mon Sep 17 00:00:00 2001 From: najy97 <57242033+najy97@users.noreply.github.com> Date: Sun, 22 Aug 2021 17:05:09 +0900 Subject: [PATCH 2/3] 08 --- Level2/Lessons42746/najy.py | 40 +++++++++++++++++++ Level2/Lessons42839/najy.py | 31 +++++++++++++++ Level2/Lessons68645/najy97.py | 32 ++++++++++++++- Level2/Lessons72412/najy97.py | 75 ++++++++++++++++++++++++++++++++++- Level2/Lessons76502/najy.py | 46 +++++++++++++++++++++ 5 files changed, 222 insertions(+), 2 deletions(-) create mode 100644 Level2/Lessons42746/najy.py create mode 100644 Level2/Lessons42839/najy.py create mode 100644 Level2/Lessons76502/najy.py diff --git a/Level2/Lessons42746/najy.py b/Level2/Lessons42746/najy.py new file mode 100644 index 0000000..e79227c --- /dev/null +++ b/Level2/Lessons42746/najy.py @@ -0,0 +1,40 @@ +#가장 큰 수 +def solution(numbers): + numbers = list(map(str,numbers)) + numbers.sort(key=lambda x: x*3, reverse=True) + + return str(int(''.join(numbers))) + +'''테스트 1 〉 통과 (750.94ms, 23.3MB) +테스트 2 〉 통과 (234.96ms, 17.1MB) +테스트 3 〉 통과 (1271.80ms, 27.4MB) +테스트 4 〉 통과 (1.60ms, 10.5MB) +테스트 5 〉 통과 (596.19ms, 21.9MB) +테스트 6 〉 통과 (455.75ms, 20.3MB) +테스트 7 〉 통과 (0.03ms, 10.4MB) +테스트 8 〉 통과 (0.03ms, 10.4MB) +테스트 9 〉 통과 (0.03ms, 10.3MB) +테스트 10 〉 통과 (0.03ms, 10.3MB) +테스트 11 〉 통과 (0.02ms, 10.4MB)''' + +'''def equalizer(num): + adder = 0 + if num==0: + return 0 + if len(str(num)) == 1: + adder = 0.3 + if len(str(num)) == 2: + adder = 0.2 + if len(str(num)) == 3: + adder = 0.1 + if num == 1000: + return 999.5 + + while num<1000: + num *= 10 + return num+adder + +def solution(numbers): + numbers.sort(key=lambda x: equalizer(x), reverse=True) + + return str(int("".join(map(str, numbers))))''' \ No newline at end of file diff --git a/Level2/Lessons42839/najy.py b/Level2/Lessons42839/najy.py new file mode 100644 index 0000000..0f14b07 --- /dev/null +++ b/Level2/Lessons42839/najy.py @@ -0,0 +1,31 @@ +#소수 찾기 +import itertools + +def isPrime(num): + if num <= 1: + return 0 + + limit = num**0.5 + for i in range(2, int(limit)+1): + if num % i == 0: + return 0 + + return 1 + +def solution(numbers): + answer = 0 + prime = [] + + numbers = list(numbers) + + for i in range(1,len(numbers)+1): + targets = list(itertools.permutations(numbers,i)) + for target in targets: + prime.append(int(''.join(map(str,target)))) + + prime = list(set(prime)) + + for num in prime: + answer += isPrime(num) + + return answer \ No newline at end of file diff --git a/Level2/Lessons68645/najy97.py b/Level2/Lessons68645/najy97.py index c0a4c57..12a3c53 100644 --- a/Level2/Lessons68645/najy97.py +++ b/Level2/Lessons68645/najy97.py @@ -1 +1,31 @@ -#삼각 달팽이 \ No newline at end of file +#삼각 달팽이 +def solution(n): + triangle = [[0 for _ in range(0, _)] for _ in range(1, n + 1)] + x = -1 + y = 0 + k = 1 + for a in range(n): + for b in range(a, n): + if a % 3 == 0: + x += 1 + elif a % 3 == 1: + y += 1 + elif a % 3 == 2: + x -= 1 + y -= 1 + triangle[x][y] = k + k += 1 + answer = sum(triangle, []) + return answer + +''' +테스트 1 〉 통과 (0.01ms, 10.3MB) +테스트 2 〉 통과 (0.01ms, 10.2MB) +테스트 3 〉 통과 (0.01ms, 10.3MB) +테스트 4 〉 통과 (2.33ms, 10.9MB) +테스트 5 〉 통과 (2.35ms, 11MB) +테스트 6 〉 통과 (1.39ms, 10.8MB) +테스트 7 〉 통과 (1689.78ms, 58.7MB) +테스트 8 〉 통과 (2452.74ms, 58.9MB) +테스트 9 〉 통과 (2141.98ms, 57MB) +''' \ No newline at end of file diff --git a/Level2/Lessons72412/najy97.py b/Level2/Lessons72412/najy97.py index c546dd0..25af35c 100644 --- a/Level2/Lessons72412/najy97.py +++ b/Level2/Lessons72412/najy97.py @@ -1 +1,74 @@ -#순위 검색 \ No newline at end of file +#순위 검색 +from itertools import combinations +from bisect import bisect_left + + +def solution(info, query): + answer = [] + info_dict = {} + + for i in range(len(info)): + infol = info[i].split() # info안의 문자열을 공백을 기준으로 분리 + mykey = infol[:-1] # info의 점수제외부분을 key로 분류 + myval = infol[-1] # info의 점수부분을 value로 분류 + + for j in range(5): # key들로 만들 수 있는 모든 조합 생성 + for c in combinations(mykey, j): + tmp = ''.join(c) + if tmp in info_dict: + info_dict[tmp].append(int(myval)) # 그 조합의 key값에 점수 추가 + else: + info_dict[tmp] = [int(myval)] + + for k in info_dict: + info_dict[k].sort() # dict안의 조합들을 점수순으로 정렬 + + for qu in query: # query도 마찬가지로 key와 value로 분리 + myqu = qu.split(' ') + qu_key = myqu[:-1] + qu_val = myqu[-1] + + while 'and' in qu_key: # and 제거 + qu_key.remove('and') + while '-' in qu_key: # - 제거 + qu_key.remove('-') + qu_key = ''.join(qu_key) # dict의 key처럼 문자열로 변경 + + if qu_key in info_dict: # query의 key가 info_dict의 key로 존재하면 + scores = info_dict[qu_key] + + if scores: # score리스트에 값이 존재하면 + enter = bisect_left(scores, int(qu_val)) + + answer.append(len(scores) - enter) + else: + answer.append(0) + + return answer + +''' +정확성 테스트 +테스트 1 〉 통과 (0.21ms, 10.5MB) +테스트 2 〉 통과 (0.22ms, 10.4MB) +테스트 3 〉 통과 (0.42ms, 10.5MB) +테스트 4 〉 통과 (2.69ms, 10.5MB) +테스트 5 〉 통과 (2.38ms, 10.6MB) +테스트 6 〉 통과 (4.51ms, 10.6MB) +테스트 7 〉 통과 (6.33ms, 10.8MB) +테스트 8 〉 통과 (38.96ms, 11.5MB) +테스트 9 〉 통과 (41.89ms, 13.3MB) +테스트 10 〉 통과 (41.50ms, 13.9MB) +테스트 11 〉 통과 (2.32ms, 10.6MB) +테스트 12 〉 통과 (4.66ms, 10.8MB) +테스트 13 〉 통과 (3.37ms, 10.8MB) +테스트 14 〉 통과 (20.88ms, 12.1MB) +테스트 15 〉 통과 (20.88ms, 12.2MB) +테스트 16 〉 통과 (2.32ms, 10.6MB) +테스트 17 〉 통과 (4.72ms, 10.8MB) +테스트 18 〉 통과 (20.88ms, 12.2MB) +효율성 테스트 +테스트 1 〉 통과 (732.93ms, 64.2MB) +테스트 2 〉 통과 (664.68ms, 64.5MB) +테스트 3 〉 통과 (720.85ms, 63.8MB) +테스트 4 〉 통과 (662.25ms, 64.2MB) +''' \ No newline at end of file diff --git a/Level2/Lessons76502/najy.py b/Level2/Lessons76502/najy.py new file mode 100644 index 0000000..d61a55b --- /dev/null +++ b/Level2/Lessons76502/najy.py @@ -0,0 +1,46 @@ +#괄호 회전하기 +from collections import deque + +str_list = None + +def check(): + global str_list + stack = [] + + for _str in str_list: + if _str in ('[', '(', '{'): stack.append(_str) + else: + if not stack: return False + x = stack.pop() + if _str == ']' and x != '[': return False + elif _str == ')' and x != '(': return False + elif _str == '}' and x != '{': return False + + if stack: return False + return True + +def solution(s): + global str_list + answer = 0 + for i in range(len(s)): + str_list = deque(s) + str_list.rotate(-i) + if check(): answer += 1 + + return answer +''' +테스트 1 〉 통과 (13.54ms, 10.2MB) +테스트 2 〉 통과 (10.11ms, 10.4MB) +테스트 3 〉 통과 (10.03ms, 10.3MB) +테스트 4 〉 통과 (11.94ms, 10.2MB) +테스트 5 〉 통과 (26.95ms, 10.2MB) +테스트 6 〉 통과 (14.38ms, 10.2MB) +테스트 7 〉 통과 (17.29ms, 10.3MB) +테스트 8 〉 통과 (21.42ms, 10.3MB) +테스트 9 〉 통과 (39.97ms, 10.3MB) +테스트 10 〉 통과 (51.04ms, 10.3MB) +테스트 11 〉 통과 (79.73ms, 10.2MB) +테스트 12 〉 통과 (0.01ms, 10.2MB) +테스트 13 〉 통과 (0.01ms, 10.2MB) +테스트 14 〉 통과 (0.02ms, 10.2MB) +''' \ No newline at end of file From 48a8ae9c93ee85dabd76d4f2eb77c5c7c3aad3c8 Mon Sep 17 00:00:00 2001 From: najy97 <57242033+najy97@users.noreply.github.com> Date: Mon, 23 Aug 2021 09:37:55 +0900 Subject: [PATCH 3/3] 08 --- Level2/Lessons42746/najy.py | 2 +- Level2/Lessons42839/najy.py | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Level2/Lessons42746/najy.py b/Level2/Lessons42746/najy.py index e79227c..1ba8065 100644 --- a/Level2/Lessons42746/najy.py +++ b/Level2/Lessons42746/najy.py @@ -1,6 +1,6 @@ #가장 큰 수 def solution(numbers): - numbers = list(map(str,numbers)) + numbers = [str(number) for number in numbers] numbers.sort(key=lambda x: x*3, reverse=True) return str(int(''.join(numbers))) diff --git a/Level2/Lessons42839/najy.py b/Level2/Lessons42839/najy.py index 0f14b07..7bcd8d9 100644 --- a/Level2/Lessons42839/najy.py +++ b/Level2/Lessons42839/najy.py @@ -20,12 +20,28 @@ def solution(numbers): for i in range(1,len(numbers)+1): targets = list(itertools.permutations(numbers,i)) + for target in targets: - prime.append(int(''.join(map(str,target)))) + prime.append(int(''.join(target))) prime = list(set(prime)) for num in prime: answer += isPrime(num) - return answer \ No newline at end of file + return answer + +''' +테스트 1 〉 통과 (0.09ms, 10.4MB) +테스트 2 〉 통과 (4.05ms, 10.4MB) +테스트 3 〉 통과 (0.04ms, 10.5MB) +테스트 4 〉 통과 (1.02ms, 10.4MB) +테스트 5 〉 통과 (7.58ms, 12MB) +테스트 6 〉 통과 (0.04ms, 10.3MB) +테스트 7 〉 통과 (0.13ms, 10.3MB) +테스트 8 〉 통과 (12.11ms, 12.1MB) +테스트 9 〉 통과 (0.05ms, 10.4MB) +테스트 10 〉 통과 (6.69ms, 10.6MB) +테스트 11 〉 통과 (1.12ms, 10.5MB) +테스트 12 〉 통과 (0.23ms, 10.5MB) +''' \ No newline at end of file