Day91

강태훈·2026년 5월 11일

nbcamp TIL

목록 보기
91/97

알고리즘 코드카타

The Number of Employees Which Report to Each Employee

with reporter as (
    select reports_to, count(employee_id) as reports_count, avg(age) as average_age
    from Employees
    group by reports_to
)

select a.employee_id, a.name, b.reports_count, round(b.average_age, 0) as average_age
from Employees a
left join reporter b
on a.employee_id = b.reports_to
where b.reports_count >= 1
order by a.employee_id asc
;

Primary Department for Each Employee

WITH Employees AS (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY employee_id ORDER BY primary_flag) AS rn
    FROM Employee
)

SELECT employee_id, department_id 
FROM Employees
WHERE rn = 1;

이진 변환 반복하기

class Solution {
    public int[] solution(String s) {
        int[] answer = {0,0};
        String sb = s;

        while (sb.length() > 1) {
            answer[1] += counter(sb);
            String binaryString = Integer.toString(nonzero(sb), 2);

            answer[0]++;
            sb = binaryString;
        }

        return answer;
    }


    public int nonzero(String sen){
        return sen.replace("0","").length();
    }

    public int counter(String sen){
        return sen.replace("1","").length();
    }
}

피보나치 수

import java.util.ArrayList;
import java.util.List;

class Solution {
    public int solution(int n) {
        int fibonacci = fibonacci(n);

        return fibonacci;
    }
    public int fibonacci(int n){
        List<Integer> fibonaccies = new ArrayList<>();
        fibonaccies.add(0);
        fibonaccies.add(1);

        for(int i = 2; i <= n; i++){
            fibonaccies.add((fibonaccies.get(i-1)+ fibonaccies.get(i-2))%1234567);
        }

        return fibonaccies.get(n);
    }
}
  • 모듈러 산술(나머지 연산)의 분배법칙 성질 활용하기!!
    덧셈: (A + B) % M = ((A % M) + (B % M)) % M
    곱셈: (A B) % M = ((A % M) (B % M)) % M
    뺄셈: (A - B) % M = ((A % M) - (B % M) + M) % M (음수가 나오는 것을 방지하기 위해 M을 더해줌)

0개의 댓글