정수 내림차순으로 배치하기
- sorted 실행 후 생성된 문자열 리스트를 join 함수를 통해서 문자열로 변경했다.
def solution(n):
n_str = "".join(sorted(str(n), reverse = True))
return int(n_str)
행렬의 덧셈
- zip 함수를 차례로 사용해 행렬의 덧셈을 구현했다.
def solution(arr1, arr2):
# 전개 순서 : [[1, 2], [2, 3]] // [[3,4], [5,6]] => [1,2], [3,4] => [4, 6]
result = [[c + d for c, d in zip(a, b)] for a, b in zip(arr1, arr2)]
return result
자연수 뒤집어 배열로 만들기
- 숫자 각 성분을 list에 넣기 위해선 str로의 변환이 필요하다.
def solution(n):
# int를 list에 넣기 위해서 str로 변환 -> map으로 다시 int로 변환
n_reverse = list(map(int, str(n)))[::-1]
return n_reverse
이상한 문자 만들기
- 다른 사람 풀이다.
- [ic]join, split[/ic] 모두 적절하게 잘 활용한 거 같아서 가져왔다.
def toWeirdCase(s):
return " ".join(map(lambda x: "".join([a.lower() if i % 2 else a.upper() for i, a \
in enumerate(x)]), s.split(" ")))
약수의 합
- 약수와 곱해진 다른 수도 약수이다.
def solution(n):
# n = 0인 경우도 존재
div_list = []
for i in range(1, int(n ** 0.5) + 1):
if n % i == 0:
div_list.append(i)
if i != n // i:
div_list.append(n // i)
return sum(div_list)
시저 암호
- 다른 사람 풀이다.
- ascii 코드의 숫자 범위를 나머지 연산을 통해서 해결했다.
def caesar(s, n):
s = list(s)
for i in range(len(s)):
if s[i].isupper():
s[i]=chr((ord(s[i])-ord('A')+ n)%26+ord('A'))
elif s[i].islower():
s[i]=chr((ord(s[i])-ord('a')+ n)%26+ord('a'))
return "".join(s)
# 주어진 문장을 암호화하여 반환하세요.
문자열 다루기 기본
- 다른 사람 풀이다.
- [ic]len(s) in ( , )[/ic]
def alpha_string46(s):
return s.isdigit() and len(s) in (4, 6)
문자열 내 p와 y의 개수
- [ic]count[/ic] 함수
def solution(s):
s = s.lower()
return s.count("p") == s.count("y")
3진법 뒤집기
- n진법 표현 : n으로 나눈 나머지를 역으로 나열
- n진법 수 -> 10진법 : [ic]int(,n)[/ic]
def to_ternary(n):
ternary = ""
while n:
q, r = divmod(n, 3)
n = q
ternary += str(r)
return ternary[::-1]
def solution(n):
n_t = to_ternary(n)[::-1]
return int(n_t, 3)
완주하지 못한 선수
- [ic]Counter[/ic] 끼리는 연산이 가능
from collections import Counter
def solution(participant, completion):
p_list = Counter(participant)
c_list = Counter(completion)
result = list(map(lambda x : x, p_list - c_list))[0]
return result