두 정수 사이의 합
문제: 두 정수 a, b 사이에 속한 모든 전수의 합을 구하면 된다.
풀이: 수학적 규칙을 이용해 풀었다. (두 수의 합) * (두 수의 차 + 1) / 2를 하면 a~b의 합을 구할 수 있다.
function solution(a, b) {
return (a + b) * (Math.abs(a - b) + 1) / 2;
}
콜라츠 추측
문제: Collatz란 사람에 의해 제기된 이 추측으로 입력된 수가 짝수면 / 2, 홀수면 * 3 + 1을 반복하면 주어진 수가 1이 된다는 것이다. 여기서 1이 되기까지 몇번을 반복하는 return하라. 단, 주어진 숫자가 1이면 0을, 500번 초과 반복해야 된다면 -1을 return하라.
풀이: 먼저 조건문을 이용해 1일 경우 0을 리턴하고 for문과 삼항연산자를 이용해 짝수, 홀수 일 시 규칙 수행을 500번 반복하는데 if문을 이용해 n이 1이 되면 return i를 했다. 그리고 for문이 끝나면 return -1을 하면 끝이다.
function solution(n) {
if (n === 1) {return 0;}
for (let i = 1; i <= 500; i++) {
n % 2 === 0 ? n /= 2 : n = n * 3 + 1;
if (n === 1) {
return i;
}
}
return -1;
}
서울에서 김서방 찾기
문제: 매개변수로 벼열이 주어지는데 요소 중 "Kim"의 위치를 찾아 "김서방은 몇에 있다"를 반환하면 된다.
풀이: indexOf()를 이용해 index를 찾고 문구에 넣어 return하면 된다.
function solution(seoul) {
const str = seoul.indexOf("Kim");
return `김서방은 ${str}에 있다`;
}
'프로그래머스 JS LV1' 카테고리의 다른 글
LV1 07 제일 작은 수 제거하기 (0) | 2022.12.13 |
---|---|
LV1 06 핸드폰 번호 가리기, 나누어 떨어지는 숫자 배열 (0) | 2022.12.12 |
LV1 04 하샤드 수, 정수 내림차순으로 배치하기, 나머지가 1이 되는 수 찾기 (0) | 2022.12.08 |
LV1 03 문자열 내 p와 y의 개수, 문자열을 정수로 바꾸기,x만큼 간격이 있는 n개의 숫자 (0) | 2022.12.08 |
LV1 02 자릿수 더하기, 자연수 뒤집어 배열로 만들기, 정수 제곱근 판별 (0) | 2022.12.02 |