25.05.19 코딩 공부 시작

코딩 척척석박사 분들 피드백 환영합니다.

공대생이 코딩에서 살아남기

코드카타(알고리즘+SQL)

07.08 코드카타

코딩 아가 2025. 7. 8. 10:10

Python3

Q

문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때,  각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.

  • b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
  • a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
  • n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
  • a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다.
  • n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다.
  • a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 중 가까운 것은 두 칸 앞이고, 이는 2로 표현합니다.

따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다.

문자열 s이 주어질 때, 위와 같이 정의된 연산을 수행하는 함수 solution을 완성해주세요.

<제한사항>

  • 1 ≤ s의 길이 ≤ 10,000
    • s은 영어 소문자로만 이루어져 있습니다.

A

def solution(s):
    answer = []
    record = {}
    for idx, i in enumerate(s):
        if i in record:
            answer.append(idx - record[i])
        else :
            answer.append(-1)
        record[i] = idx
            
    return answer

풀이

answer = [ ]: 결과를 담을 리스트
record = { }: 각 문자의 마지막 등장 인덱스를 기록하는 딕셔너리

enumerate(반복가능객체): 인덱스와 함께 순회할 수 있도록 도와주는 내장 함수

idx - record[i]: (현재 인덱스 위치) - (같은 인덱스를 전에 본 위치)

My SQL

Q

다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블과 식품의 주문 정보를 담은 FOOD_ORDER 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품코드, 식품분류, 식품 가격을 의미합니다. FOOD_ORDER 테이블은 다음과 같으며 ORDER_ID, PRODUCT_ID, AMOUNT, PRODUCE_DATE, IN_DATE, OUT_DATE, FACTORY_ID, WAREHOUSE_ID는 각각 주문 ID, 제품 ID, 주문량, 생산일자, 입고일자, 출고일자, 공장 ID, 창고 ID를 의미합니다.

FOOD_PRODUCT FOOD_ORDER 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해주세요.

A

SELECT a.PRODUCT_ID, a.PRODUCT_NAME, sum(b.AMOUNT) * a.PRICE as TOTAL_SALES
from FOOD_PRODUCT a inner join FOOD_ORDER b
    on a.PRODUCT_ID = b.PRODUCT_ID
where b.PRODUCE_DATE >= '2022-05-01' and b.PRODUCE_DATE <= '2022-05-31'
# where YEAR(b.PRODUCE_DATE) = '2022' and MONTH(b.PRODUCE_DATE) = '05'
group by a.PRODUCT_NAME
order by TOTAL_SALES DESC, a.PRODUCT_ID

풀이 

날짜를 나타내는 방식은 여러개

'코드카타(알고리즘+SQL)' 카테고리의 다른 글

07.16 코드카타  (0) 2025.07.16
07.15 코드카타  (1) 2025.07.15
07.07 코드카타  (0) 2025.07.07
07.04 코드카타  (3) 2025.07.04
07.02 코드카타 (SQL floor)  (0) 2025.07.02