Skip to content

[1주차] 백제완 #2

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 14, 2024
Merged

[1주차] 백제완 #2

merged 10 commits into from
Sep 14, 2024

Conversation

Jewan1120
Copy link
Contributor

@Jewan1120 Jewan1120 commented Sep 9, 2024

📗 월요일

[CT] 자율주행 자동차

🤔 시간복잡도 고려사항

  • 조건대로 구현하는 문제였으므로 시간 복잡도는 고려하지 않았음

💡 풀이 아이디어

  1. 항상 현재 방향에서 좌회전을 하면서 탐색
  2. 얼마만큼 이동했는가를 출력하는 문제이기에 재귀 DFS로 풀이
  3. 재귀 함수 내에서 다음 재귀 함수를 호출하지 못하면 이동할 수 없었던 걸로 판단 후진하는 로직 실행
    3-1. 후진하는 위치가 도로라면 해당 좌표로 재귀 함수 호출
    3-2. 후진하는 위치가 인도라면 움직인 영역을 출력 후 메인 함수 종료

[CT] 불안한 무빙워크

🤔 시간복잡도 고려사항

  • 2 ≤ n ≤ 100 → O(n^4)도 충분히 가능
  • 시간 복잡도를 고려하기 보다는 조건대로 구현

💡 풀이 아이디어

  • 두 개의 덱(위 무빙워크, 아래 무빙워크)을 이용해서 풀이
  • 덱을 원형 연결리스트처럼 사용하여 각 로직 구현

📗 화요일

[BOJ] 2531 회전 초밥

🤔 시간복잡도 고려사항

  • 2 ≤ N ≤ 30,000, 2 ≤ k ≤ 3,000 → 10^7 ~ 10^8 이므로 O(n)으로 진행해야 함
    선형탐색으로 특정 범위 내에 원소를 확인하는 슬라이딩 윈도우를 사용

💡 풀이 아이디어

  • 슬라이딩 윈도우를 구현한 후 움직이면서 내부에 초밥이 종류별로 몇 개가 사용되고 있는지 확인
  • 사용한 개수가 감소하여 0이 된 경우에는 현재 종류의 수 감소
  • 사용한 개수가 0에서 증가하는 경우에는 현재 종류의 수 증가
  • 쿠폰에 적힌 종류를 사용하고 있지 않다면 +1을 적용 후 최댓값 계산

[SQL] 복수 국적 메달 수상한 선수 찾기

💡 풀이 아이디어

  • INNER JOIN으로 필요한 테이블 결합
  • 년도 및 메달 수상 여부 확인
  • 그룹 조건GROUP BY, HAVING으로 문제 조건에 맞게 출력

📗 수요일

[BOJ] 3020 개똥벌레

🤔 시간복잡도 고려사항

  • 2 ≤ N ≤ 200,000, 2 ≤ H ≤ 500,000 → O(nlogn)으로 진행

💡 풀이 아이디어

  • 첫 번째 제출에는 정렬이 가능하므로 정렬 후 이분탐색으로 높이마다 부서지는 장애물의 개수를 구해줬었음
    그러다가 이분탐색 까지는 필요 없는 듯 하여 투 포인터로 진행
  • 두 번째 제출에는 개수만 카운팅하는 문제임을 알고서 누적합으로 해당 높이에서 부서지는 장애물의 총 합을 계산

📗 목요일

[PG] 132265 롤케이크 자르기

🤔 시간복잡도 고려사항

  • 1 ≤ topping의 길이 ≤ 1,000,000 → 10^6 이므로 O(nlogn)으로 진행

💡 풀이 아이디어

  • 종류의 수를 계산하기 위해서 중복을 허용하지 않는 SET을 이용
  • 왼쪽에서 오른쪽으로, 오른쪽에서 왼쪽으로 두 가지로 종류의 수를 계산
  • 특정 인덱스를 기준으로 좌, 우에서 몇 종류를 사용하고 있는 지를 확인

[PG] 12927 야근 지수

🤔 시간복잡도 고려사항

  • 1 ≤ works의 길이 ≤ 20,000 → 10^4 이므로 O(n^2) 가능

💡 풀이 아이디어

  • 그리디한 방식으로 최댓값만 처리
  • 우선순위 큐를 이용해서 최댓값을 찾아서 계산
  • 최댓값과 다음 값의 차이를 이용해서 최댓값을 조정해나감

[SQL] 지역별 주문의 특징

💡 풀이 아이디어

  • PIVOT테이블을 만들어서 출력

📗 금요일

[PG] 49994 방문 길이

🤔 시간복잡도 고려사항

  • 1 ≤ dirs의 길이 ≤ 500 → 조건에 맞게 구현하는 문제라 고려하지 않음

💡 풀이 아이디어

  • 캐릭터가 계속 움직이는 것이므로 재귀 DFS를 선택
  • 현재 점에서 가는 방향다음 점으로 오는 방향 방문 체크를 구현
  • 두 방문 체크 중 하나라도 방문하지 않았다면 방문 길이 증가

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

🤔 시간복잡도 고려사항

  • 4 ≤ numbers의 길이 ≤ 1,000,000 → 10^6이므로 O(nlogn) 가능

💡 풀이 아이디어

  • 스택을 활용하여 큰 수를 저장
  • numbers의 배열을 뒤부터 탐색하여 자신보다 큰 수가 나올 때까지 스택에서 원소를 꺼내고 조건에 맞게 결과 배열에 저장
  • 자신을 스택에 집어넣고 다음 탐색 진행

@Jewan1120 Jewan1120 merged commit 2d7ab14 into GreatAlgorithm-Study:main Sep 14, 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