프로그래머스 | 공 던지기 [파이썬 python]

2023. 3. 5. 19:41·Algorithm/프로그래머스
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

def solution(numbers, k):
    answer = 0
    if len(numbers) < k * 2:
        numbers = numbers * ((k*2) // len(numbers) + 1)

    answer = numbers[2*(k-1)]
    return answer

 

문제에서 주어지는 예시 중 하나를 가지고 살펴보면 다음과 같다.

numbers = [1, 2, 3, 4, 5, 6]가 있을 때 k=5 이면 5번째로 공을 던지는 사람을 찾아야 한다.

두 칸씩 건너뛰기 때문에 [1, 2, 3, 4, 5, 6] 만으로는 답을 수할 수 없으므로 리스트를 확장시켜 [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]에서 5번째로 공을 던지는 사람을 찾으면 1, 3, 5, 1, 3 순으로 answer = 3이다.

어떤 경우에 numbers를 확장시켜야 하는지 생각해 보니 k번을 두 칸씩 건너뛰어야 하므로 k*2가 len(numbers) 보다 크면 numbers를 확장시켜야 함을 알게 되었다. 

따라서 if 조건문을 작성해주었고, 리스트 * 1을 하면 원본 리스트와 같기 때문에 +1을 해주어 확장시켜 주었다.

그리고 원하는 k번째 공을 던지는 사람을 찾기 위해 numbers의 2*(k-1) 번째 요소를 찾아주었다.

2*k를 하게 되면 k번째 공을 받는 사람이 되기 때문에 k-1을 해주어야 k번째 공을 던지는 사람을 찾을 수 있다.

 

다른 코드

def solution(numbers, k):
    answer = numbers[2*(k-1) % len(numbers)]
    return answer

 

배열을 확장시키지 않고 풀 수 있는 방법이 없을지 고민해 보다가 나머지 연산자를 이용하여 기존 배열 안에서 계속 순환하도록 해주었다.

1) 2칸씩 이동하므로 2를 곱해주고
2) 0번 인덱스부터 시작해서 '공을 던지는 사람'을 찾아야 하므로 (k-1)
3) numbers 길이를 넘어갈 수 없으므로 % 연산자 사용

따라서 공이 움직인 횟수를 numbers의 길이로 나누면 원하는 답을 구할 수 있다.

저작자표시 (새창열림)
'Algorithm/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | 합성수 찾기 [파이썬 python]
  • 프로그래머스 | 배열 회전시키기 [파이썬 python]
  • 프로그래머스 | 2차원으로 만들기 [파이썬 python]
  • 프로그래머스 | 특정 문자 제거하기 [파이썬 python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (46)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
프로그래머스 | 공 던지기 [파이썬 python]
상단으로

티스토리툴바