Skip to content
Open

Njy #59

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions Level2/Lessons12981/najy97.py
Original file line number Diff line number Diff line change
@@ -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)
'''
40 changes: 40 additions & 0 deletions Level2/Lessons42746/najy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#가장 큰 수
def solution(numbers):
numbers = [str(number) for number in 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))))'''
47 changes: 47 additions & 0 deletions Level2/Lessons42839/najy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#소수 찾기
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(target)))

prime = list(set(prime))

for num in prime:
answer += isPrime(num)

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)
'''
45 changes: 45 additions & 0 deletions Level2/Lessons42885/najy97.py
Original file line number Diff line number Diff line change
@@ -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)
'''
31 changes: 31 additions & 0 deletions Level2/Lessons68645/najy97.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#삼각 달팽이
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)
'''
74 changes: 74 additions & 0 deletions Level2/Lessons72412/najy97.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#순위 검색
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)
'''
46 changes: 46 additions & 0 deletions Level2/Lessons76502/najy.py
Original file line number Diff line number Diff line change
@@ -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)
'''