← 실전 문제

한 바퀴의 확인 순서

Python디버깅

원형으로 놓인 labels를 인덱스 start부터 앞으로 한 바퀴 확인해요. 인덱스 n-1 다음은 0이에요. 각 위치를 정확히 한 번 확인하고 enabled가 1인 위치의 label만 순서대로 기록해요. 같은 label이 있어도 위치마다 각각 기록해요.

solution(labels, enabled, start)가 기록 리스트를 반환하도록 잘못된 한 줄을 고쳐 주세요.

매개변수와 반환값

  • 두 리스트의 길이 n은 1300, label은 11,000, enabled는 0 또는 1이에요.
  • start는 0~n-1이에요. 활성 위치가 없으면 빈 리스트를 반환해요.

예시

  1. labels = [11, 22, 33, 44], enabled = [1, 0, 1, 1], start = 2이면 결과는 [33, 44, 11]이에요.
  2. labels = [3, 6, 9], enabled = [1, 1, 1], start = 1이면 결과는 [6, 9, 3]이에요.

실행용 입출력

첫 줄에 n start, 둘째 줄에 labels n개, 셋째 줄에 enabled n개를 입력해요. 반환값을 공백으로 출력하고, 빈 리스트이면 빈 줄을 출력해요.

예시 입력

4 2
11 22 33 44
1 0 1 1

예상 결과

33 44 11

예시 입력

3 1
3 6 9
1 1 1

예상 결과

6 9 3
핵심 개념
  • array-1d: len(labels)는 리스트 길이예요. labels와 enabled의 같은 위치를 함께 읽어요.
  • loops: range(n)은 0부터 n-1까지 n번 반복해요. 시작 위치와 한 바퀴의 횟수는 서로 다른 값이에요.
  • conditionals: 활성 여부는 위치마다 확인하며 같은 label도 별도로 기록해요.

(start + step) % n의 나머지 연산은 마지막 인덱스를 넘으면 0으로 돌아오게 해요. .append(...)는 결과 리스트의 뒤에 항목을 추가해요.

입력 하네스의 input()은 한 줄의 문자열을 읽고, .split()은 공백으로 항목을 나눠요. map(int, ...)는 각 항목을 정수로 바꾸고 list(...)는 그 결과를 리스트로 모아요. range(n)은 0부터 n-1까지 반복해요. 하네스는 함수 호출을 위한 자체 연결이며 풀이의 반환 계약과 구분해요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기