TIL26 | CodeKata 배열 요소 조합해서 특정 수 만들기, 숫자 뒤집기
2021. 10. 19. 22:00ㆍ언어/Python
반응형
CodeKata Week 1
코드카타 첫 주가 시작됐다.
렛츠고고
문제 1
two_sum
함수에 숫자 리스트와 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.
def two_sum(nums, target):
# 구현
input
nums = [4, 9, 11, 14]
target = 13
output
[0, 1]
나의 풀이
1) 2중 for문
def two_sum(nums, target):
for i in range(len(nums)-1):
for j in range(i+1,len(nums):
if nums[i] + nums[j] == target:
return [i , j]
가장 쉽게 구현할 수 있는 방법이다.
시간 복잡도 O(N²) 이기 때문에
nums
의 데이터가 많은 경우 시간 내에 풀기 힘들 수도 있다.
2) itertools 표준 라이브러리 사용
from itertools import combinations
def two_sum(nums, target):
combinated = list(combinations(nums, 2))
for i in combinated:
if i[0] + i[1] == target:
return [nums.index(i[0]), nums.index(i[1])]
- itertools 표준 라이브러리의 combinations 사용해서 푸는 방법
- combinations() 이 조합의 경우를 반환하기 때문에 조합된 경우만큼 for문 내에서 조건을 확인하면 된다.
문제 2
reverse 함수에 정수인 숫자를 인자로 받습니다.
그 숫자를 뒤집어서 return해주세요.
def reverse(number):
# 구현
input & output
x: 1234
return: 4321
x: -1234
return: -4321
x: 1230
return: 321
나의 풀이
1) replace() 사용
def reverse(number):
if number == 0 : return 0
flag = '-' if number < 0 else ''
nums = list(str(number).replace('-', '').replace('0', '')[::-1])
nums.insert(0, flag)
return int(''.join(nums))
- 음수
-
판별을 위한 flag 변수 생성 - 음수
-
와0
의 값을 replace() 를 사용해서 빈값으로 만들어 준 뒤에 reverse를 사용 - string 배열을
join
으로 합쳐서 리턴
2) 조건문으로 str배열값 확인 (재원님 풀이! )
def reverse(number):
res = str(number)[::-1]
if res[0] == 0:
res = res[1:]
if res[-1] == '-':
res = int(res[0:len(res)-1]) * -1
return int(res)
x = -1230
print(reverse(x))
- str 배열 인덱스를 사용해서
-
,0
값을 확인
재원님의 풀이를 보고 굳이 내장함수인 replace(), join() 등을 사용하지 않아도 list index로 깔끔하게 처리할 수 있다는 것을 배웠다 !
반응형
'언어 > Python' 카테고리의 다른 글
TIL28 | Many-to-Many관계, Django의 ManyToManyField (0) | 2021.10.20 |
---|---|
TIL27 | Django C.R.U.D : URLconf, Model, View (0) | 2021.10.20 |
TIL25 | httpie 사용하기 (0) | 2021.10.19 |
TIL21 | Django Tutorials (2) 프로젝트 만들기 (0) | 2021.10.14 |
TIL20 | Django Tutorials (1) 초기 세팅 (0) | 2021.10.14 |