Skip to content
This repository was archived by the owner on Feb 22, 2022. It is now read-only.

Commit 87de5c0

Browse files
committed
20220129
1 parent 92d567d commit 87de5c0

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed

opijae/programmers/가장큰수.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
def compare(x):
2+
x=str(x)
3+
return x.ljust(4,x[0])
4+
def compare1(x):
5+
x=str(x)
6+
if len(x)>1:
7+
return x.ljust(4,x[1])
8+
return x.ljust(4,x[0])
9+
def compare2(x):
10+
x=str(x)
11+
if len(x)>2:
12+
return x.ljust(4,x[2])
13+
return x.ljust(4,x[0])
14+
def solution(numbers):
15+
answer = ''
16+
# 첫번째 자리로 패딩해 비교를 한다.
17+
# ex) (100,1000,10,20,9) -> (1001,1000,1011,2022,9999) -> (9,20,10,100,1000)
18+
# 첫번쨰 자리가 같다면 두번째 자리를 패딩해 비교
19+
# ex) (21, 212) -> (211, 212) -> (212,21)
20+
# 두 번쨰 자리가 같다면 세번째 자리를 패딩해 비교
21+
numbers=sorted(numbers ,key=lambda x: (compare(x),compare1(x),compare2(x)),reverse=True)
22+
answer="".join(str(x) for x in numbers)
23+
if answer[0]=='0':
24+
return '0'
25+
return answer

opijae/programmers/소수찾기.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from itertools import permutations
2+
import math
3+
def is_prime(num):
4+
for i in range(2,int(math.sqrt(num))+1):
5+
if num%i==0:
6+
return False
7+
return True
8+
def solution(numbers):
9+
answer = 0
10+
num_arr=[]
11+
# 모든 경우 만들기
12+
for i in range(1,len(numbers)+1):
13+
arr=list(map(int,map("".join,permutations(list(numbers),i))))
14+
num_arr.extend(arr)
15+
num_arr=set(num_arr) # 중복 제거
16+
# 각 경우가 소수인지 판단
17+
for num in num_arr:
18+
if num<2:
19+
continue
20+
if is_prime(num):
21+
answer+=1
22+
return answer

opijae/programmers/조이스틱.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
def get_alpha(target):
2+
if ord(target) - 65 > 13:
3+
return 90 - ord(target)
4+
return ord(target) - 65
5+
6+
def solution(name):
7+
answer = 0
8+
for ch in name:
9+
answer += get_alpha(ch)
10+
n = len(name)
11+
move = n - 1
12+
for idx in range(n):
13+
next_idx = idx + 1
14+
while (next_idx < n) and (name[next_idx] == 'A'):
15+
next_idx += 1
16+
# idx 지금 까지 온 거리
17+
# n - next_idx = 앞으로 가야할 거리
18+
# 지금까지 간 거리랑 앞으로 갈 거리 비교 (뒤로 갈지 앞으로 갈지를 더함)
19+
distance = min(idx, n - next_idx)
20+
# 현재까지 온 길이(idx) + 앞으로 가야할 거리(n- next_idx) + 뒤로 갈지 앞으로 갈지를 더함
21+
# 매 지점마다 뒤로갈지 앞으로 갈지 정하면서 최소 값을 비교
22+
move = min(move, idx + n - next_idx + distance)
23+
24+
answer += move
25+
return answer

0 commit comments

Comments
 (0)