'6월 10일' 서른여덟 번째 기록 [TIL]

가은·2024년 6월 10일
0

I Learned [본 캠프]

목록 보기
63/135
post-thumbnail

👩‍🏫 오늘의 출석

❓서른여덟덟 번째, 9 to 9을 해 본 소감❓

오늘은 내일 발표와 제출을 위해 계속 병합하며 에러 해결하고, 발표 준비도 하며 시간을 보냈다.

📑오늘 학습한 내용

🧩오늘의 알고리즘 : 가장 가까운 같은 글자 🧩

문제 : 문자열 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은 영어 소문자로만 이루어져 있습니다.
class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        
        for(int i=0;i<s.length();i++){
            if(i !=0){
                int idx = s.substring(0,i).lastIndexOf(s.charAt(i));
                if(idx != -1){
                    answer[i] = i-idx;
                    
                }
                else{
                    answer[i] = idx;
                }
            }
            else{
                answer[i] = -1;
            }
        }
        
        return answer;
    }
}

lastIndexOf(string s)

string s = "banana";
s.lastIndexOf("a");		//5
s.lastIndexOf("f");		//없으면 -1 반환

charAt(int index)

string s = "apple";
s.charAt(3);		// 'l' 반환

🧩 오늘의 SQL : 5월 식품들의 총매출 조회하기 🧩

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

SELECT O.PRODUCT_ID, P.PRODUCT_NAME, (SUM(O.AMOUNT) * P.PRICE) AS TOTAL_SALES
FROM FOOD_PRODUCT P
JOIN FOOD_ORDER O
ON P.PRODUCT_ID = O.PRODUCT_ID
WHERE YEAR(PRODUCE_DATE) = 2022 AND MONTH(PRODUCE_DATE) = 5
GROUP BY O.PRODUCT_ID
ORDER BY TOTAL_SALES DESC, P.PRODUCT_ID 

0개의 댓글