[파이썬 코드카타]
두 개 뽑아서 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/68644
*참고 intertools 라이브러리 설명 및 활용 문제 풀이 및 https://datananalysis.tistory.com/112
1) 어떤 문제가 있었나
정수 배열 number에서 서로 다른 인덱스의 2개 수를 뽑은 뒤 더해서 만들 수 있는 모든 수를 오름차순 배열로 담아 반환
numbers = [2,1,3,4,1]
result = [2,3,4,5,6,7]
2) 내가 시도해본 건 무엇인가
지난 문제풀이에서 활용했던 itertools 라이브러리 활용
3) 어떻게 해결했나
def solution(numbers):
import itertools as it
iter_list = list(it.combinations(numbers, 2))
answer = []
for i in iter_list:
if sum(i) not in answer:
answer.append(sum(i))
answer.sort()
return answer
4) 무엇을 새롭게 알았나
- (복습) 삼총사 문제에서 경우의 수를 내는데 활용한 itertools 라이브러리 재학습 (중복은 자기 원소를 포함하는지 여부)
└ permutation: 순서는 고려하지만 중복 없는 것
└ combination: 순서도 중복 없는 것
└ product(permutation with repetition): 순서랑 중복 모두 있고, repeat 파라미터 적용 필요
└ combinatnion_with_replacement: 순서는 없으나 중복 허용
- 라이브러리 없이 경우의 수 만드는 법 with double for문과 set
└ for 문을 2번 사용해서 각각의 원소가 다 한 번씩 만날 수 있도록 함
└ set(): 집합 함수
: set으로 묶으면 중복 값을 없애주고, { } 로 형태로 변환되면서 정렬처리 됨.
: 단, set처리한 후 list로 또 묶으면 정렬 순서가 달라질 수 있으니 체크 후 sorted()를 같이 써야 할 수도 있음
# 다른 사람 풀이 참조
numbers = [2,1,3,4,1]
answer = []
for i in range(len(numbers)):
for j in range(i+1, len(numbers)):
print(i, j)
# (0, 1~4), (1, 2~4), (2, 3~4), (3, 4)
answer.append(numbers[i] + numbers[j])
sorted(list(set(answer)))
print(answer) # 경우의 수 합계값 모두 리스트화
# [3, 5, 6, 3, 4, 5, 2, 7, 4, 5]
print(set(answer)) # 집합하여 중복 제거
# {2, 3, 4, 5, 6, 7}
print(list(set(answer))) # 다시 리스트로
# [2, 3, 4, 5, 6, 7]
print(sorted(list(set(answer)))) # 마지막 정렬
# [2, 3, 4, 5, 6, 7]
[SQL 코드카타]
1) 어떤 문제가 있었나
Average Population of Each Continent
https://www.hackerrank.com/challenges/average-population-of-each-continent/problem?isFullScreen=true
2) 내가 시도해본 건 무엇인가
대륙이 NULL인 값을 where 에서 제외하고, 평균 인구수도 round 0으로 처리하였으나 오답 처리
> rounded down to nearest integer 가 내림이라는 의미인 것 같아 내림 처리할 수 있는 함수 서치
3) 어떻게 해결했나
select COUNTRY.Continent, FLOOR(avg(CITY.Population))
from CITY
join COUNTRY on CITY.CountryCode = COUNTRY.Code
where COUNTRY.Continent is not null
group by COUNTRY.Continent;
4) 무엇을 새롭게 알았나
- CEILING(값) : 소수점 자리를 정수로 절상, 올림 처리하는 함수. 영단어로 천장, 최고치 등의 뜻
- FLOOR(값) : 소수점 자리를 정수로 절삭, 내림 처리하는 함수. 영단어로 바닥, 최저치 등의 뜻
'TIL' 카테고리의 다른 글
[240401] 파이썬 유저 코호트 분석 (월별/주차별) (0) | 2024.04.01 |
---|---|
[240329] 파이썬 sqlalchmey로 SQL DB 연동해 데이터 불러오기 (0) | 2024.04.01 |
[240327] 파이썬: 코드카타 48 & SQL: 코드카타 166 (0) | 2024.03.27 |
[240326] 파이썬: 코드카타 47 & SQL: 코드카타 165 (0) | 2024.03.26 |
[240325] 파이썬: 코드카타 46 & SQL: 코드카타 161~164 (0) | 2024.03.25 |