저장을 습관화
[못풀음] 프로그래머스 LV.0 공 던지기 본문
프로그래머스 LV.0 공 던지기
https://school.programmers.co.kr/learn/courses/30/lessons/120843
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 명
공 던지기
2. 문제 설명
머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.
3. 제한 사항
- 2 < numbers의 길이 < 100
- 0 < k < 1,000
- numbers의 첫 번째와 마지막 번호는 실제로 바로 옆에 있습니다.
- numbers는 1부터 시작하며 번호는 순서대로 올라갑니다.
4. 예시
numbers | k | result |
[1, 2, 3, 4] | 2 | 3 |
[1, 2, 3, 4, 5, 6] | 5 | 3 |
[1, 2, 3] | 3 | 2 |
5. 기본 제공 코드
function solution(numbers, k) {
var answer = 0;
return answer;
}
6. 제출한 내 답
//
6-2. VSC에 작성한 내용
//
7. 특이사항
틀렸던 코드
const solution = (numbers, k) => {
let strings = numbers.join("");
let arr = [];
while (strings.length <= k * 2) {
strings += strings;
}
// 현재 strings의 상황
// 12341234 // 길이 8
// 123456123456 // 길이 12
// 123123123123 // 길이 12
// 뭐라고하지?
// 요소 2개씩, 몇개? k개
// 그리고 반환은 arr[k-1][0]
for (i = 0; i < strings.length; i += 2) {
arr.push(strings[i]);
}
// return arr;
return arr[k - 1];
};
// 테스트
// k는 1 이상 999 이하
console.log(solution([1, 2, 3, 4], 2));
// ["1", 2, "3", 4]
// 1번이면 충분함(4), 배열의 길이는 4, k는 2
console.log(solution([1, 2, 3, 4, 5, 6], 5));
// ["1", 2, "3", 4, "5", 6, "1", 2, "3", 4, 5, 6]
// 2번 필요함(12), 배열의 길이는 6, k는 5
console.log(solution([1, 2, 3], 3));
// ["1", 2, "3", 1, "2", 3, 1, 2, 3]
// 3번 필요함(9), 배열의 길이는 3, k는 3
// 즉 총 필요한 배열의 길이는 k*2 이상이 되어야함
// arr.length > k*2
numbers가 [1,2,3,4] 같은 경우에는 12341234로,
[1,2,3,4,5,6]의 경우에는 123456123456로 만들고
for 반복문을 통하여 2번째 인덱스의 수만을 가져와 배열 arr에 넣고
k-1번째 요소를 리턴하도록 하였다
입출력 예시는 맞는데 채점에서 14.9점 맞았다
화가 난다
문제가 무엇을 요구하는지도 헷갈리기 시작했다
질문탭에서 짝수 홀수로 푸는 사람들을 보았다
이 방법을 사용해보자
틀렸던 코드 2
const solution = (numbers, k) => {
let strings = numbers.join("");
while (strings.length <= k * 2) {
strings += strings;
}
// 짝수만
let arr = strings.split("").filter((v, i) => {
return i % 2 === 0 ? v : false;
});
// 현재 strings의 상황
// 12341234; // 길이 8
// 123456123456; // 길이 12
// 123123123123; // 길이 12
// return +arr[k - 1];
return arr;
};
// 테스트
// k는 1 이상 999 이하
// numbers의 길이는 3이상 999 이하
console.log(solution([1, 2, 3, 4], 2));
// ["1", 2, "3", 4]
// 1번이면 충분함(4), 배열의 길이는 4, k는 2
console.log(solution([1, 2, 3, 4, 5, 6], 5));
// ["1", 2, "3", 4, "5", 6, "1", 2, "3", 4, 5, 6]
// 2번 필요함(12), 배열의 길이는 6, k는 5
console.log(solution([1, 2, 3], 3));
// ["1", 2, "3", 1, "2", 3, 1, 2, 3]
// 3번 필요함(9), 배열의 길이는 3, k는 3
// 즉 총 필요한 배열의 길이는 k*2 이상이 되어야함
// arr.length > k*2
도저히 이해가 가지 않는다
죽고싶다
8. 다른 사람이 작성한 답
8-1.
//
'코딩 테스트 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글
프로그래머스 LV.1 부족한 금액 계산하기 (0) | 2023.09.28 |
---|---|
프로그래머스 LV.0 소인수분해 (0) | 2023.09.28 |
프로그래머스 LV.0 잘라서 배열로 저장하기 (0) | 2023.09.28 |
프로그래머스 LV.0 커피 심부름 (0) | 2023.09.28 |
프로그래머스 LV.0 qr code (0) | 2023.09.28 |