문제 (1번)


  • 신입생과 재학생이 일렬로 서 있다.
  • 이중에 일부 학생을 선정해서 그룹을 만들려고 한다.
  • 그룹에 속한 학생들은 모두 좌, 우로 인접해서 서 있어야 한다. 즉 그룹에 속한 학생들 사이에 그룹에 속하지 않은 학생이 서 있으면 안된다.
  • 그룹에는 재학생이 정확히 K명 포함되어야 한다.
  • 그룹에 포함되는 신입생의 수는 제한이 없다. 신입생이 포함되지 않아도 된다.

제한 사항

  • 단 그룹은 한 개만 만들어야 한다.

  • 0은 신입생, 1은 재학생을 의미한다.

  • 학생의 길이는 1 <= <= 100 이다.

  • 그룹을 하나도 만들지 못하는 경우에는 0을 반환한다.

아이디어

  • 우선 1의 개수를 세어서 K보다 작으면 0을 반환한다.

  • 1이 있는 인덱스를 모두 찾는다.

  • 첫 번째 1이 있는 인덱스부터 K 만큼 지난 1이 있는 인덱스를 찾는다.

  • 인덱스 양끝으로 부터 0을 포함하고 있는 리스트를 구한다. 리스트에서 순서를 지키면서 양끝에 0을 포함할 수 있는 조합의 개수를 더한다.

  • 이를 인덱스 리스트가 끝날때까지 구현한다.

코드

from typing import List


def solution(student: List[int], k: int) -> int:

    old_student__idx = []
    for idx in range(len(student)):
        if student[idx] == 1:
            old_student__idx.append(idx)
    if len(old_student__idx) < k:
        return 0


if __name__ == '__main__':
    student = [0, 1, 0, 0, 1]
    print(solution(student, 1))

문제 (2번)


제한 사항

  • 검색 기능을 가진 사이트를 운영하고 있다. 매월 초마다 전원을 최고의 이슈 검색어를 조사하고 있다.

  • 조사하는 방법은 아래와 같다.

  • 전월의 사용자들의 검색 기록을 일 기준으로 나눈 research가 주어진다.
  • research를 기준으로 어떤 검색어가 몇 번 검색되었는지를 정리한다.
  • 어떤 검색어가 연속된 n일 동안 최소 k 번 이상 검색되고, 같은 연속된 n일 동안 총 2 x n x k번 이상 검색되었을 경우 이슈 검색어가 된다.
  • 이슈 검색어 중에서 가장 여러 번 이슈 검색어가 최고의 이슈 검색어가 된다.
  • 가장 여러 번 이슈 검색어가 된 검색어가 여러 개인 경우 사전 순으로 빠른 검색어가 최고의 이슈 검색어가 된다.

아이디어

  • research 배열을 해시 테이블 형태로 만든다. 그리고 K 이상인 값을 뽑는다.

코드

문제 (3번)


제한 사항

아이디어

코드

문제 (4번)


제한 사항

아이디어

코드

문제 (5번)


제한 사항

아이디어

코드

문제 (6번)


제한 사항

아이디어

코드

>> Home