프로그래머스, 자바스크립트) 공 던지기

2024. 1. 19. 16:17·개발/알고리즘(코딩테스트)

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120843#

 

프로그래머스

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

programmers.co.kr

 

풀이

1번부터 던지며 한명씩 건너뛰므로 1,3,5,7 ... 이런식으로 가게 된다

배열이 [1,2,3] 이고 배열을 길게 늘린다고 가정하면 [1,2,3,1,2,3,1,2,3 ...]

여기서 k번 순서로 던지는 사람은 2k-1번째 사람이 된다. 5번째로 던지는 사람을 구한다고 가정하면

2*5-1 이므로 9. 1-2-3-1-2-3-1-2-3 순서대로 돼서 3번이 5번째 사람이 된다. 

 

결국 배열의 길이로 나눈 나머지 값이 인덱스가 되는 것이다.

다만 여기서 예외가 있다. 나누어떨어지는 경우, 즉 0이되는 경우에는 배열의 마지막 요소를 가르켜야되고 그외 나머지는 index-1번째 요소를 가져오면 된다. 예시값으로 만들어지는 배열은 1,2,3,4,5 순서대로 가지니 0일때는 마지막 요소를 반환하고 0이 아닐때는 그냥 index를 반환하면된다. ((원래 배열에서 꺼낼때는 0부터 시작이므로 index-1을 해줘야함))

 

function solution(numbers, k) {
  const index =  (2 * k - 1) % numbers.length;
  return index === 0 ? numbers[numbers.length -1] : index
}
저작자표시 비영리 변경금지 (새창열림)

'개발 > 알고리즘(코딩테스트)' 카테고리의 다른 글

프로그래머스, 자바스크립트) qr code  (0) 2024.01.20
프로그래머스, 자바스크립트) 영어가 싫어요  (0) 2024.01.20
프로그래머스, 자바스크립트) 커피 심부름  (1) 2024.01.18
프로그래머스, 자바스크립트) 리스트 자르기  (0) 2024.01.18
프로그래머스, 자바스크립트) 배열의 길이를 2의 거듭제곱으로 만들기  (0) 2024.01.17
'개발/알고리즘(코딩테스트)' 카테고리의 다른 글
  • 프로그래머스, 자바스크립트) qr code
  • 프로그래머스, 자바스크립트) 영어가 싫어요
  • 프로그래머스, 자바스크립트) 커피 심부름
  • 프로그래머스, 자바스크립트) 리스트 자르기
빔네모
빔네모
console.log("빔네모")
  • 빔네모
    bimnemo("개발")
    빔네모
  • 전체
    오늘
    어제
    • 기록 (153)
      • 기술 (42)
        • JavaScript (6)
        • TypeScript (9)
        • React.js (10)
        • Next.js (0)
        • 라이브러리,도구 (4)
        • HTML,CSS (4)
        • CS (5)
        • BE (4)
      • 개발 (99)
        • 프로젝트 (0)
        • 트러블슈팅 (5)
        • 알고리즘(코딩테스트) (94)
      • 정보 (4)
      • 취미 (8)
        • 감상 (8)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
빔네모
프로그래머스, 자바스크립트) 공 던지기
상단으로

티스토리툴바