728x90
5명씩
function solution(names) {
var answer = [];
const chunk = 5;
const TwoArr = [];
for(let i = 0; i < names.length; i += chunk){
const arr = names.slice(i, i + chunk);
TwoArr.push(arr)
}
for(let i = 0; i < TwoArr.length; i++){
answer.push(TwoArr[i][0])
}
return answer;
}
풀이 시간: 29분 28초
0레벨인데... 가벼운 마음으로 들어왔는데 알고리즘을 이해하는데 시간이 오래걸렸다... 처음엔 알고리즘 이해를 제대로 하지 못해서 입출력 예시 답안만 보고 아래와 같이 작성했었는데
for(let i=0; i < names.length-5;i++){
if(answer.length < 2){
answer.push(names[i]);
answer.push(names[i+5]);
}
}
이게 코드 실행에는 통과지만 제출을 했을 때 전부 오답이 뜨는 것을 보고 뭔가 큰 문제가 있다는 사실을 깨달았다. 5명씩으로 묶는 배열은 원래 배열의 길이에 따라 3개도, 4개도 될 수 있다는 사실을 망각하고 생각없이 풀어서 생긴 문제였다. 이 문제를 이중배열로 만들어 풀어보자 싶었고 for문과 slice 메서드를 활용해 문제를 풀 수 있었다.
n 번째 원소까지
function solution(num_list, n) {
return num_list.slice(0,n);
}
풀이 시간: 1분 08초
제곱 수 판별하기
function solution(n) {
const root = Math.sqrt(n);
const integer = Number.isInteger(root)
return integer == true ? 1 : 2;
}
풀이 시간: 8분 55초
제곱근을 어떻게 구해야하나 고민을 많이 했다. 약수를 구하고 그 약수를 제곱할때 해당 값이 나오면 1을 반환해야하나? 고민을 하다가 왠지 지난번에 제곱근 메서드를 봤었던 기억이 있어 다시 찾아봤다. 제곱근 메서드와 isInteger 메서드로 반환값이 정수인 값이 제곱 수 이므로 두 메서드를 이용하여 처리했다. 기억하자!! Math.sqrt(), Number.isInteger()
728x90
'프로그래머스' 카테고리의 다른 글
[코딩테스트] 231216_세균 증식, flag에 따라 다른 값 반환하기, 정수 부분 (0) | 2023.12.16 |
---|---|
[코딩테스트] 231215_길이에 따른 연산, 특정한 문자를 대문자로 바꾸기, 정수 찾기, 숨어있는 숫자의 덧셈(1) (0) | 2023.12.15 |
[코딩테스트] 231211_머쓱이보다 키 큰 사람, 중복된 숫자 개수, 삼각형의 완성조건(1) (0) | 2023.12.11 |
[코딩테스트] 231002_핸드폰 번호 가리기, 없는 숫자 더하기, 가운데 글자 가져오기, 내적, 약수의 개수와 덧셈, 문자열 내림차순으로 배치하기 (0) | 2023.10.03 |
[코딩테스트] 230916_나누어 떨어지는 숫자 배열, 음양 더하기 (0) | 2023.09.16 |