TIL

2024-04-08

여연찌 2024. 4. 8. 18:11
  • Today

1. ADsP 통계분석 - 기초통계

2. SQL 코드카타

3. 알고리즘 코드카타

 

 


  • Today I Learned

꼭 필요한 몇가지만 작성(복습 목적)

어떤 문제가 발생했고, 어떤 것들을 시도했고, 어떻게 해결해서, 무엇을 새롭게 알게되었는지

 

SQL

구분자로 구분 한 뒤 문자열 이어주기

CONCAT_WS('구분자',문자열1,문자열2,...)

 

FROM 절 서브쿼리를 WITH 문으로

SELECT flavor
FROM 
(
SELECT *
FROM first_half
UNION 
SELECT *
FROM july
) a
GROUP BY flavor
ORDER BY SUM(total_order) DESC
LIMIT 3

이렇게 프롬절에 넣을 서브쿼리를 with 문으로 빼주면 됨!

WITH total AS (
SELECT *
FROM first_half
UNION 
SELECT *
FROM july
)

SELECT flavor
FROM total
GROUP BY flavor
ORDER BY SUM(total_order) DESC
LIMIT 3

 

테이블이 하나 더 생긴 것처럼 취급을 해주기 때문에

with 문으로 쓰면 조금더 편하게 보이는 것 같다.

 

서브쿼리를 실행하기까지가 너무 오랜시간이 걸려

더 복습하고 여러개의 문제를 풀어보아야 할 것 같다..

 

UNION 과 UNION ALL 의 차이점

UNION 은 중복값을 제외하고 합쳐준다.

UNION ALL 은 중복값을 포함하여 합쳐준다.

 

* FROM table1,table2

를 할 경우 아래 행이 아닌 옆으로 붙여준다!(CROSS JOIN)

 


파이썬

음양 더하기

https://lyj-01.tistory.com/79

 

음양 더하기

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re

lyj-01.tistory.com

def solution(absolutes, signs):
    answer = 0
    if absolutes == signs[1]:
        answer += absolutes
    return answer

# signs 를 리스트로 만들고 같으면 더해주기~ 를 하려고 했지만 맞지 않게 나왔고..

 

구글링을 통해서 알아낸 코드

def solution(absolutes, signs):
    answer = 0
    for i in range(len(absolutes)):
        if signs[i]:
            answer += absolutes[i]
        else:
            answer -= absolutes[i]
    return answer

# 여기서 주의해야 할 점은 제한 사항 중

" signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수이다 "

 

absolutes의 길이를 범위에 두고

참(양수) 일때면 absolutes 의 인덱스 위치에 있는 값을 더해준다.

 

len() 함수는 단순히 길이를 반환해준다고만 생각해서

len(absolutes) 를 해주는 이유가 이해되지 않아 꽤나 헤맸다..

absolutes  인덱스(위치)의 값이 필요하기 때문에 len() 함수를 써준 것!

 

absolutes=[4,7,12]

signs=[true,false,true]

라고 하면

signs[0]    # 0번째 값이 참(양수)일때

absolutes[0]   # 0번째 값을 더해준다

 

지금까지 문제를 풀며 제한사항은 크게 신경을 쓰지 않았는데 앞으로는 주의깊게 봐야겠다.

 

 

핸드폰 번호 가리기

def solution(phone_number):
    answer = []
    answer.replace(phone_number,'*',-4)
    return answer

뒤에서 4자리라서 replace 에 -4 를 넣어봤는데

AttributeError: 'list' object has no attribute 'replace'

오류가 떴다.

replace 는 list 에서 사용할 수 없다고 함

 

phone_number 을 반복해서 *을 하나씩 넣어줘야겠다고 생각했고

def solution(phone_number):
    answer = ''
    for i in range(phone_number):
        answer += '*'
    return answer

이렇게 작성했더니 

TypeError: 'str' object cannot be interpreted as an integer

또다시 오류 ㅠㅜㅜ

문자열 데이터를 정수형처럼 사용해서 오류발생했다 함

int 로 바꿔주어야 하나해서

    for i in range(int(phone_number)):

이렇게했더니 

끝도없이 실행을 하고 있더라 ... 

 

phone_number 의 길이만큼 반복해주길 바라기 때문에 

len() 함수를 써주었다.

    for i in range(len(phone_number)):

여기서! 나는 뒤에 4자리는 제외하고 싶으니까

    for i in range(len(phone_number)-4):

이제 뒤에 4자리만 합쳐주면 되겠다

def solution(phone_number):
    answer = ''
    for i in range(len(phone_number)-4):
        answer += '*'
    return answer + phone_number[-4:]

 

완성!!

천천히 풀어보면 될 것인데.. 결국 구글링을 통해서 알아냈다는게 조금 아쉽다 ㅠㅜ

 

[-4:]

뒤에서 4번째부터~ 끝까지

[:-4]

뒤에서 5번째부터 앞까지 

[4:]

5번째부터 끝까지

[:4]

4번째부터 앞까지

 

 

 

 


  • Next

1. ADsP 강의

2. SQL 코드카타

3. 파이썬 코드카타

 

 

 

'TIL' 카테고리의 다른 글

2024-04-11  (0) 2024.04.11
2024-04-09  (0) 2024.04.09
2024-04-05  (0) 2024.04.05
2024-04-04  (0) 2024.04.04
2024-04-03  (0) 2024.04.03