TIL: Python 학습 내용
오늘 풀어본 문제:
코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다. 각 카드 뭉치에서 카드를 순서대로 한 장씩 사용하여 주어진 순서의 단어 배열을 만들 수 있는지 확인하는 문제입니다.
제한사항:
- 1 ≤ cards1의 길이, cards2의 길이 ≤ 10
- 1 ≤ cards1[i]의 길이, cards2[i]의 길이 ≤ 10
- cards1과 cards2에는 서로 다른 단어만 존재합니다.
- 2 ≤ goal의 길이 ≤ cards1의 길이 + cards2의 길이
- 1 ≤ goal[i]의 길이 ≤ 10
- goal의 원소는 cards1과 cards2의 원소들로만 이루어져 있습니다.
- cards1, cards2, goal의 문자열들은 모두 알파벳 소문자로만 이루어져 있습니다.
구체적 구현:
def solution(cards1, cards2, goal):
idx1, idx2 = 0, 0
for word in goal:
if idx1 < len(cards1) and cards1[idx1] == word:
idx1 += 1
elif idx2 < len(cards2) and cards2[idx2] == word:
idx2 += 1
else:
return "No"
return "Yes"
- 초기 설정:
- idx1과 idx2 변수를 0으로 초기화하여 cards1과 cards2의 인덱스를 추적합니다.
- 단어 배열 확인:
- goal 리스트를 순회하면서 각 단어가 cards1 또는 cards2의 현재 위치에 있는지 확인합니다.
- 현재 단어가 cards1에 있으면 idx1을 증가시키고, cards2에 있으면 idx2를 증가시킵니다.
- 현재 단어가 어느 카드 뭉치에서도 찾을 수 없으면 "No"를 반환합니다.
- 결과 반환:
- 모든 단어를 확인한 후, 문제가 없다면 "Yes"를 반환합니다.
오늘 배운 점:
- 두 개의 리스트를 동시에 순회하면서 조건을 확인하는 방법이 있다는 사실을 배웠습니다.
TIL: SQL 학습 내용
오늘 풀어본 문제:
중고 거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 회원 정보를 담은 USED_GOODS_USER 테이블에서, 중고 거래 게시물을 3건 이상 등록한 사용자의 정보를 조회하는 문제입니다. 조회 결과는 사용자 ID를 기준으로 내림차순 정렬해야 합니다.
구체적 구현:
SELECT U.USER_ID, U.NICKNAME,
CONCAT(U.CITY, ' ', U.STREET_ADDRESS1, ' ', IFNULL(U.STREET_ADDRESS2, '')) AS 전체주소,
CONCAT(SUBSTR(U.TLNO, 1, 3), '-', SUBSTR(U.TLNO, 4, 4), '-', SUBSTR(U.TLNO, 8)) AS 전화번호
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
GROUP BY U.USER_ID, U.NICKNAME, U.CITY, U.STREET_ADDRESS1, U.STREET_ADDRESS2, U.TLNO
HAVING COUNT(B.BOARD_ID) >= 3
ORDER BY U.USER_ID DESC;
- JOIN 사용:
- USED_GOODS_BOARD 테이블과 USED_GOODS_USER 테이블을 WRITER_ID와 USER_ID를 기준으로 내부 조인합니다.
- GROUP BY 사용:
- USER_ID, NICKNAME, CITY, STREET_ADDRESS1, STREET_ADDRESS2, TLNO 컬럼을 그룹화하여 사용자별로 데이터를 집계합니다.
- HAVING 절 사용:
- COUNT(B.BOARD_ID)가 3 이상인 사용자만 필터링하여 재거래한 사용자를 추출합니다.
- 주소와 전화번호 형식 변경:
- CONCAT 함수를 사용하여 전체 주소와 전화번호를 형식에 맞게 변환합니다. STREET_ADDRESS2가 NULL인 경우를 처리하기 위해 IFNULL 함수를 사용합니다.
- 정렬:
- USER_ID를 기준으로 내림차순 정렬하여 결과를 반환합니다.
오늘 배운 점:
- 문자열 변환 함수CONCAT을 사용하여 데이터의 형식을 특정한 형식으로 변환하여 출력하는 방법을 익혔습니다.
'TIL' 카테고리의 다른 글
본 캠프 22일차 TIL (3) | 2024.07.15 |
---|---|
본 캠프 21일차 TIL (0) | 2024.07.14 |
본 캠프 19일차 TIL (0) | 2024.07.12 |
본 캠프 18일차 TIL (0) | 2024.07.11 |
본 캠프 17일차 TIL (0) | 2024.07.10 |