Skip to content

Conversation

@yangseoh22
Copy link
Contributor

✅ 1806 - 부분합

  1. 수열 입력 받아 배열에 저장
  2. 반복문을 통해 배열 속 값들을 순회 (왼쪽 포인터 : i / 오른쪽 포인터 : right)
    2-1). 부분합이 S이하이고 right가 배열의 길이를 벗어나지 않았다면, 포인터가 가리킨 원소들의 합(currSum)을 저장
    2-2). currSum이 S이상이라면, i와 right의 간격을 구하고, S이상이 되다는 의미로 flag를 true로 갱신
    2-3). 부분합이 S이상인 경우들의 두 포인터의 간격들 중 최솟값을 구함
    2-4). 다음 부분합을 구하기 위해 curSum에서 i위치의 원소 값을 뺌
  3. flag가 flase라면 0을, 아니라면 구한 최솟값을 출력

✅ 2531 - 회전초밥

  1. 현재 초밥 벨트 위에 존재하는 초밥의 종류들을 배열에 저장
  2. 현재 주기의 먹은 초밥들을 저장할 eat 배열 생성
  3. 초기화를 위해 처음~k개를 먹었을 때의 초밥 가짓수 cnt를 구함 (eat의 원소가 0일 경우를 이용)
  4. 먹은 초밥의 eat 배열 원소도 함께 증가 시켜줌
  5. max라는 변수에 cnt만큼 할당해주고, 쿠폰을 쓰지 않았다면 max+1
  6. 두번째 접시 부터 k개를 먹는 경우를 모두 조사
    6-1-1). 이전 주기에서의 시작 스시의 인덱스 startIdx를 구함
    6-1-2). 현재 주기에서는 먹지 않으므로 해당 인덱스의 eat 원소를 1감소
    6-1-3). 바로 전단계에서 변화된 eat원소가 0이라면 현재 주기에서 먹지 않는 종류 이므로 cnt를 1감소
    6-2-1). 현재 주기에서의 마지막 스시의 인덱스 endIdx를 구함
    6-2-2). 해당 인덱스의 eat원소가 0이라면 현재 주기에서 처음 먹는 종류 이므로 cnt를 1증가
    6-2-3). 현재 주기에서 먹었으므로 해당 인덱스의 eat 원소를 1증가
    6-3). 현재 cnt를 curCnt 변수에 저장해두고 쿠폰을 쓰지 않았다면 1증가
    6-4). curCnt와 max를 비교해 최댓값 갱신
  7. 최댓값 출력

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