Skip to content

[1주차] 이지영 #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Sep 15, 2024
Merged

[1주차] 이지영 #5

merged 10 commits into from
Sep 15, 2024

Conversation

yeongleej
Copy link
Contributor

📗 월요일

[CT] 자율주행 자동차

🤔 시간복잡도 고려사항

N * M * 과정횟수 == 50 * 50 * 3

💡 풀이 아이디어

  • 위치 객체(Pos)를 생성해서 자동차의 상태(x좌표,y좌표, 방향)을 기록
  • 위치벡터가 {북, 동, 남, 서}일 때, 좌회전한 벡터값은 (i + 3) % 4, 후진한 벡터값은 (i+2) % 4로 계산

[CT] 불안한 무빙워크

🤔 시간복잡도 고려사항

모든칸 확인(N * N) * 안전성 감소(N)

💡 풀이 아이디어

  • 각 무빙워크 칸을 나타내는 객체 생성 후, (안정성, 사람 여부)를 저장
  • 무빙워크는 칸의 배열로 상태를 나타냄
  • 단계별로 구조화해서 풀기
  • 무빙워크 회전 / 사람이동+안정성처리 / 사람증가+안정성처리 / N번째칸 처리

📗 화요일

[BOJ] 2531_회전초밥

🤔 시간복잡도 고려사항

접시 수 N

💡 풀이 아이디어

  • Map을 활용하여 각 초밥의 개수를 컨트롤
  • 슬라이딩 윈도우
  • i번째 초밥을 제거하고, i+k번째 초밥을 추가해 초밥 가짓수 확인

[SQL] 연도별 대장균 크기의 편차 구하기

💡 풀이 아이디어

  • 가상 테이블 (WITH 테이블명 AS()) 활용 or 서브쿼리 활용

📗 수요일

[BOJ] 3020_개똥벌레

🤔 시간복잡도 고려사항

장애물 기록(N) + 각 높이 확인(H) == O(N+H)

💡 풀이 아이디어

  • 누적합: 높이h에 대한 장애물 개수를 누적합으로 기록, 석순과 종유순을 나누어 기록
    ex) urr[3] = 높이가 3일때, 충돌하는 석순의 개수
  • 이분탐색
  • 석순과 종유석 리스트를 분리, 각 리스트 정렬
  • 높이가 h일 때, 이분탐색으로 석순과, 종유석에 각각 파괴해야하는 장애물 수 카운트
    • 단, 종유석은 높이를 H-i+1로 설정
    • 시작인덱스=0, 끝인덱스= N/2-1
    • 파괴 시작점 인덱스 초기화
      • 가장 마지막 인덱스로 초기화해야 함
    • 탐색하는 인덱스의 장애물이 현재 높이(h)보다 크거나 같다면 충돌 발생한 것이고, 그 인덱스 이후의 장애물들은 모두 파괴해야 함
    • 즉, 파괴해야하는 장애물 수는 == (총 장애물 개수 - 파괴 시작점 인덱스)

📗 목요일

[PG] 132265_롤케이크 자르기

🤔 시간복잡도 고려사항

토핑의 길이 == topping.length 1,000,000

💡 풀이 아이디어

  • Map을 활용, 두 개(left, right)의 롤케이크를 선언
  • 초기에는 모든 토핑은 right에 있고 for문을 통해 하나씩 left로 이동하면서 공평한 수 체크

[PG] 12927_야근 지수

🤔 시간복잡도 고려사항

works의 길이 * n은 충분히 크기 때문에 우선순위 큐를 활용해야 함

💡 풀이 아이디어

  • 우선순위 큐를 활용해서 작업량이 가장 많은 작업 먼저 처리

[SQL] 부모의 형질을 모두 가지는 대장균 찾기

💡 풀이 아이디어

  • 비트연산(&, |) 이용
  • AND연산(&)은 1&1 = 1인 성질을 활용해서, 자식&부모 = 부모인 것을 SELECT

📗 금요일

[PG] 49994_방문 길이

🤔 시간복잡도 고려사항

그래프 크기(10 * 10)이 충분히 작고, 명령의 길이가 500이하이므로 크게 고려 X

💡 풀이 아이디어

  • 좌표(i, j)에 방문한 4방향을 확인해야 함
  • 각 좌표를 객체로 생성하고 4방향 방문 리스트를 체크
  • 방향 벡터가 {상, 우, 하, 좌}일 때, i를 방문하면, (i+2)%4도 방문 체크 해줘야 함
  • 즉, 움직인 방향과 그 반대 방향을 모두 방문 체크

[PG] 154539_뒤에 있는 큰 수 찾기

🤔 시간복잡도 고려사항

각 원소에 대해 뒤에 있는 수를 체크하면 O(N^2)이므로 불가 -> O(N) 해결해야 함

💡 풀이 아이디어

  • stack을 활용
  • 0 ~ n 순으로 스택에 삽입
  • 스택의 상단의 원소 값이 현재 값보다 작다면, 현재 값이 상단의 "뒤에 있는 큰 수"가 됨
    (스택의 상단이 현재 값보다 클 때까지 반복)

@yeongleej yeongleej merged commit 14f4875 into GreatAlgorithm-Study:main Sep 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant