- 문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. - 제한 조건
n은 길이 10,000이하인 자연수입니다.
function solution(n) { var answer = ''; for(let i = 0; i < n; i++ ){ if(i % 2 ===0){ answer += '수' }else { answer += '박' } } return answer; }
풀이 .
짝수면 수박 즉 박으로 끝나고 홀수면 수 로 끝난다.
i/2의 나머지값이 0 이라면 짝수이므로 answer에 수 를 더하면되고 그게 아니라면 박을 더하면된다.
아침에 풀었던거라 빨리 풀려다 보니 삼항연산자도 안썼었다. 만약 다시 풀라고하면 if문이 아니라
i % 2 ===0 ? answer+= '수' : answer +='박' 이런식으로 풀었을거 같다.
다른사람의 풀이
var waterMelon = n =>'수박'.repeat(n/2) + (n%2 === 1 ? '수' : '');
repeat을 써서 문자열을 '수박'문자열을 n/2회 만큼 반복하고 n%2===1 이라면 수를 더붙이고 아니라면 빈 문자열을 더하는식으로 짰다.
확실히 이게 짧아보이고 더 좋아보이긴하는데 repeat을 생각할 수 있을지 모르겠다. - 문제 설명 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. - 제한사항
a, b의 길이는 1 이상 1,000 이하입니다.
a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
풀이방법.function solution(a, b) { var answer = 0; for(let i=0 ; i < a.length;i++){ answer += a[i]*b[i] } return answer; }
풀이방법이라고 할것도없이 너무 쉬워서 '이게 맞나?' 란 생각이 들었지만 아침이고 더 생각하기 귀찮아서 그냥 제출 했는데
다른사람의 풀이.
풀고나서 이걸보니까, '아 reduce메서드를 의도한 거구나' 싶어서 나한테 실망했다. 조금만 더 생각하고 풀었으면function solution(a, b) { return a.reduce((acc, _, i) => acc += a[i] * b[i], 0); }
충분히 알고있는 문법이라 풀었을텐데... - 문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. - 제한사항
1 ≤ left ≤ right ≤ 1,000
function solution(left, right) {
var answer = 0;
for(let i= left ; i <= right; i++){
Number.isInteger(Math.sqrt(i)) ? answer -= i : answer += i;
}
return answer;
}
풀이방법.
두번째문제에서 별 생각없이 제출을 해서 이번에는 더 깊게 생각했었다.
처음엔 for문을 2중으로 써서 하면 되겠다 싶었는데, 문제를 좀 더 보다 보니 생각해보니 약수가 홀수일려면 제곱근이여야 한다는걸 알았다.
그러면 분명 루트를 씌우는 문법이 있을꺼라고 생각했고, 검색결과 Math.sqrt(i)를 쓰면 숫자 i에 루트를 씌운다는걸 알았다.
그렇다면 정수를 판별하는 Number.isInteger()를 써서 정수라면 약수가 홀수이므로 answer에 1을 빼고 그게아니라면 1을 더했다.
'코딩테스트' 카테고리의 다른 글
| (javascript)행렬의 덧셈 (0) | 2024.01.22 |
|---|---|
| (javascript)문자열 내림차순으로 배치하기, 부족한 금액 계산하기, 문자열 다루기 기본 (0) | 2024.01.19 |
| (javascript)제일 작은 수 제거하기, 가운데 글자 가져오기 (0) | 2024.01.17 |
| (javascript)음양더하기, 핸드폰 번호 가리기, 없는 숫자 더하기 (0) | 2024.01.16 |
| (javascript)콜라츠 추측, 서울에서 김서방 찾기, 나누어 떨어지는 숫자 (1) | 2024.01.15 |